-- | Work in Progress. module Kindly.Rank2 ( BFunctor, bmap, BFunctor2, bmap2, ) where -------------------------------------------------------------------------------- import Kindly.Class -------------------------------------------------------------------------------- type BFunctor b = FunctorOf ((->) ~> (->)) (->) b bmap :: BFunctor b => forall f g. (forall x. f x -> g x) -> b f -> b g bmap nat = map (Nat nat) type BFunctor2 b = FunctorOf ((->) ~> (->) ~> (->)) (->) b bmap2 :: BFunctor2 b => forall f g. (forall x x'. f x x' -> g x x') -> b f -> b g bmap2 nat = map (Nat (Nat nat))