@@ -4,8 +4,8 @@ import Builtins
44
55%access public
66
7−data Homomorphism : Type -> Type -> Type where
8− Homo : (a -> b) -> Homomorphism a b
7+data Morphism : Type -> Type -> Type where
8+ Mor : (a -> b) -> Morphism a b
99
1010data Endomorphism : Type -> Type where
1111 Endo : (a -> a) -> Endomorphism a
@@ -16,22 +16,22 @@ data Kleislimorphism : (Type -> Type) -> Type -> Type -> Type where
1616applyKleisli : Monad m => (Kleislimorphism m a b) -> a -> m b
1717applyKleisli (Kleisli f) a = f a
1818
19−applyHomo : Homomorphism a b -> a -> b
20−applyHomo (Homo f) a = f a
19+applyMor : Morphism a b -> a -> b
20+applyMor (Mor f) a = f a
2121
2222applyEndo : Endomorphism a -> a -> a
2323applyEndo (Endo f) a = f a
2424
25−instance Functor (Homomorphism r) where
26− fmap f (Homo a) = Homo (f . a)
25+instance Functor (Morphism r) where
26+ fmap f (Mor a) = Mor (f . a)
2727
28−instance Applicative (Homomorphism r) where
29− pure a = Homo $ const a
30− (Homo f) <$> (Homo a) = Homo $ \r => f r $ a r
28+instance Applicative (Morphism r) where
29+ pure a = Mor $ const a
30+ (Mor f) <$> (Mor a) = Mor $ \r => f r $ a r
3131
32−instance Monad (Homomorphism r) where
33− return a = Homo $ const a
34− (Homo h) >>= f = Homo $ \r => applyHomo (f $ h r) r
32+instance Monad (Morphism r) where
33+ return a = Mor $ const a
34+ (Mor h) >>= f = Mor $ \r => applyMor (f $ h r) r
3535
3636instance Semigroup (Endomorphism a) where
3737 (Endo f) <+> (Endo g) = Endo $ g . f
@@ -42,4 +42,4 @@ instance Monoid (Endomorphism a) where
4242infixr 1 ~>
4343
4444(~>) : Type -> Type -> Type
45−a ~> b = Homomorphism a b
45+a ~> b = Morphism a b