com.github.tonivade.purefun.instances.ConstInstances 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.Eq;
import com.github.tonivade.purefun.Function1;
import com.github.tonivade.purefun.Higher1;
import com.github.tonivade.purefun.Instance;
import com.github.tonivade.purefun.type.Const;
import com.github.tonivade.purefun.typeclasses.Contravariant;
import com.github.tonivade.purefun.typeclasses.Functor;
public interface ConstInstances {
static Eq, A>> eq(Eq eq) {
return (a, b) -> eq.eqv(a.fix1(Const::narrowK).get(), a.fix1(Const::narrowK).get());
}
static Functor> functor() {
return new ConstFunctor() {};
}
static Contravariant> contravariant() {
return new ConstContravariant() {};
}
}
@Instance
interface ConstFunctor extends Functor> {
@Override
default Const map(Higher1, A> value, Function1 map) {
return value.fix1(Const::narrowK).retag();
}
}
@Instance
interface ConstContravariant extends Contravariant> {
@Override
default Const contramap(Higher1, A> value, Function1 map) {
return value.fix1(Const::narrowK).retag();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy