packages feed

caledon-2.0.0.0: examples/record.ncc

defn functor : (prop -> prop) -> prop
   | functorImp = {f : prop -> prop} ({a : prop }{b : prop} (a -> b -> prop) -> f a -> f b -> prop) -> functor f

defn fmap : {f} functor f => {a}{b} (a -> b -> prop) -> f a -> f b -> prop
   | getFMap = {f : prop -> prop}{fm : {a}{b} (a -> b -> prop) -> f a -> f b -> prop}
                {a : prop}{b : prop}{foo : a -> b -> prop}{fa : f a }{fb : f b }
               fm foo fa fb -> fmap foo fa fb
{-
defn identity : prop -> prop
   | cons = {a} a -> identity a

defn mapIdentity : {a}{b} (a -> b -> prop) -> identity a -> identity b -> prop
   | mapIdentityImp = {foo}{a}{b} foo a b -> mapIdentity foo (cons a) (cons b)


defn functorIdentity : functor identity
  as functorImp mapIdentity
-}