@@ -30,10 +30,12 @@ instance applyData :: Apply Data where
3030instance applicativeData :: Applicative Data where
3131 pure = return
3232
33−instance monadData :: Prelude.Monad Data where
34− return = Data
33+instance bindData :: Bind Data where
3534 (>>=) (Data a) f = f a
3635
36+instance monadData :: Monad Data where
37+ return = Data
38+
3739data Maybe a = Nothing | Just a
3840
3941instance functorMaybe :: Functor Maybe where
@@ -45,11 +47,13 @@ instance applyMaybe :: Apply Maybe where
4547instance applicativeMaybe :: Applicative Maybe where
4648 pure = return
4749
48−instance monadMaybe :: Prelude.Monad Maybe where
49− return = Just
50+instance bindMaybe :: Bind Maybe where
5051 (>>=) Nothing _ = Nothing
5152 (>>=) (Just a) f = f a
5253
54+instance monadMaybe :: Monad Maybe where
55+ return = Just
56+
5357test4 :: forall a m. (Monad m) => a -> m Number
5458test4 = \_ -> return 1
5559
@@ -70,10 +74,12 @@ instance applyFunction :: Apply ((->) r) where
7074instance applicativeFunction :: Applicative ((->) r) where
7175 pure = return
7276
73−instance monadFunction :: Prelude.Monad ((->) r) where
74− return a r = a
77+instance bindFunction :: Bind ((->) r) where
7578 (>>=) f g r = g (f r) r
7679
80+instance monadFunction :: Monad ((->) r) where
81+ return a r = a
82+
7783ask r = r
7884
7985runReader r f = f r