module Signal where
+import Monad
import LazyST
import List
import Random
(*>=) = lift2 (>=)
(*&&) = lift2 (&&)
(*||) = lift2 (||)
-(*++) = lift2 (++)
+(*++) = lift2 mplus
(*:) = lift2 (:)
data Then = Then
deriving Show
instance Functor Signal where
- map f ~(List as) = List (map f as)
+ fmap f ~(List as) = List (map f as)
at ~(List l) n = l!!n
------------------------------------------------------------------------
-- Non-determinism
-integers = List . unsafePerformIO . randomIO
+-- integers :: (Integer,Integer) -> Signal Integer
+integers rng = List (unsafePerformIO (do { g <- newStdGen ;
+ return (randomRs rng g) }))
-ints = map toInt . integers . toIntegers
+ints = fmap toInt . integers . toIntegers
where
toIntegers (x,y) = (toInteger x,toInteger y)