cat/instances/contravariant
Op type
and its Contravariant instance.
Values
pub fn op_contravariant(
,
) -> contravariant.Contravariant(
types.OpC(r),
a,
b,
cat.Op(r, a),
cat.Op(r, b),
)
Op Contravariant Instance
.
// Haskell implementation
instance Contravariant (Op r) where
contramap :: (b -> a) -> Op r a -> Op r b
contramap f g = g∘. f
Examples
let f = fn(b) {
case b {
True -> 2
False -> 4
}
}
let original = Op(fn(x) { int.to_string(x * 2) })
let result = op_contravariant().contramap(f)(original)
result.apply(False)
// -> "8"