All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.tonivade.purefun.instances.Function1Instances Maven / Gradle / Ivy

/*
 * Copyright (c) 2018-2019, Antonio Gabriel Muñoz Conejo 
 * Distributed under the terms of the MIT License
 */
package com.github.tonivade.purefun.instances;

import com.github.tonivade.purefun.Function1;
import com.github.tonivade.purefun.Higher2;
import com.github.tonivade.purefun.Instance;
import com.github.tonivade.purefun.typeclasses.Profunctor;

public interface Function1Instances {

  static Profunctor profunctor() {
    return new Function1Profunctor() {};
  }
}

@Instance
interface Function1Profunctor extends Profunctor {
  @Override
  default  Higher2 dimap(Higher2 value, Function1 contramap, Function1 map) {
    Function1 function = value.fix2(Function1::narrowK);
    return function.compose(contramap).andThen(map);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy