[project @ 1999-06-09 09:35:54 by simonpj]
[ghc-hetmet.git] / ghc / tests / programs / jeff-bug / PreludeSig.hs
index f2cd610..b54bbbe 100644 (file)
@@ -1,8 +1,9 @@
 module PreludeSig where
 
-import Prelude(Ord,Bool,MonadZero,Int,($),(.))
+import Prelude(Ord,Bool,Int,($),(.))
 import qualified Prelude as P
 import qualified List
+import Monad
 import Signal
 
 -- Begin Signature ----------------------------------------------------
@@ -20,7 +21,7 @@ max :: Ord a => Signal a -> Signal a -> Signal a
 min :: Ord a => Signal a -> Signal a -> Signal a
 maximum :: Ord a => Signal [a] -> Signal a
 minimum :: Ord a => Signal [a] -> Signal a
-filter :: MonadZero c => (a -> Bool) -> Signal (c a) -> Signal (c a)
+filter :: MonadPlus c => (a -> Bool) -> Signal (c a) -> Signal (c a)
 partition :: (a -> Bool) -> Signal [a] -> (Signal [a],Signal [a])
 fst :: Signal (a,b) -> Signal a
 snd :: Signal (a,b) -> Signal b
@@ -44,7 +45,10 @@ maximum = lift1 P.maximum
 
 minimum = lift1 P.minimum
 
-filter x y = lift1 (P.filter x) y
+filter p y = lift1 filt y
+          where
+            filt m = do { x <- m;
+                          if p x then mzero else return x }
 
 partition x y = unbundle2 (lift1 (List.partition x) y )