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"
Search Document