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 ----------------------------------------------------
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
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 )