Another AMP fix for Stream
authorAustin Seipp <austin@well-typed.com>
Tue, 14 Jan 2014 01:00:47 +0000 (19:00 -0600)
committerAustin Seipp <austin@well-typed.com>
Tue, 14 Jan 2014 09:46:08 +0000 (03:46 -0600)
Signed-off-by: Austin Seipp <austin@well-typed.com>
compiler/utils/Stream.hs

index bfc6f93..47cdee0 100644 (file)
@@ -11,6 +11,8 @@ module Stream (
     collect, fromList,
     Stream.map, Stream.mapM, Stream.mapAccumL
   ) where
+import Control.Monad
+import Control.Applicative
 
 -- |
 -- @Stream m a b@ is a computation in some Monad @m@ that delivers a sequence
@@ -37,6 +39,13 @@ module Stream (
 --
 newtype Stream m a b = Stream { runStream :: m (Either b (a, Stream m a b)) }
 
+instance Monad f => Functor (Stream f a) where
+  fmap = liftM
+
+instance Monad m => Applicative (Stream m a) where
+  pure  = return
+  (<*>) = ap
+
 instance Monad m => Monad (Stream m a) where
   return a = Stream (return (Left a))