on master help sign in
put Homomorphism's Applicative instance before its Monad instance.
f6a62bfstartling
lib/Data/Morphisms.idr+4−4
@@ -22,14 +22,14 @@ applyHomo (Homo f) a = f a
22applyEndo : Endomorphism a -> a -> a
22applyEndo : Endomorphism a -> a -> a
23applyEndo (Endo f) a = f a
23applyEndo (Endo f) a = f a
24
24
25−instance Monad (Homomorphism r) where
26− return a = Homo $ const a
27− (Homo h) >>= f = Homo $ \r => applyHomo (f $ h r) r
28−
29instance Applicative (Homomorphism r) where
25instance Applicative (Homomorphism r) where
30 pure a = Homo $ const a
26 pure a = Homo $ const a
31 (Homo f) <$> (Homo a) = Homo $ \r => f r $ a r
27 (Homo f) <$> (Homo a) = Homo $ \r => f r $ a r
32
28
29+instance Monad (Homomorphism r) where
30+ return a = Homo $ const a
31+ (Homo h) >>= f = Homo $ \r => applyHomo (f $ h r) r
32+
33instance Semigroup (Endomorphism a) where
33instance Semigroup (Endomorphism a) where
34 (Endo f) <+> (Endo g) = Endo $ g . f
34 (Endo f) <+> (Endo g) = Endo $ g . f
35
35