1 module PreludeSig where
3 import Prelude(Ord,Bool,Int,($),(.))
4 import qualified Prelude as P
9 -- Begin Signature ----------------------------------------------------
11 Functions in this module are functions from the Haskell
12 prelude lifted on Signals
15 last :: Signal [a] -> Signal a
16 head :: Signal [a] -> Signal a
17 tail :: Signal [a] -> Signal [a]
18 splitAt :: Signal Int -> Signal [a] -> (Signal [a], Signal [a])
19 length :: Signal [a] -> Signal Int
20 max :: Ord a => Signal a -> Signal a -> Signal a
21 min :: Ord a => Signal a -> Signal a -> Signal a
22 maximum :: Ord a => Signal [a] -> Signal a
23 minimum :: Ord a => Signal [a] -> Signal a
24 filter :: MonadPlus c => (a -> Bool) -> Signal (c a) -> Signal (c a)
25 partition :: (a -> Bool) -> Signal [a] -> (Signal [a],Signal [a])
26 fst :: Signal (a,b) -> Signal a
27 snd :: Signal (a,b) -> Signal b
29 -- End Signature -----------------------------------------------------
36 splitAt x y = unbundle2 $ lift2 P.splitAt x y
38 length = lift1 P.length
44 maximum = lift1 P.maximum
46 minimum = lift1 P.minimum
48 filter p y = lift1 filt y
51 if p x then mzero else return x }
53 partition x y = unbundle2 (lift1 (List.partition x) y )
59 -- Begin Signature ----------------------------------------------------