[Haskell-cafe] Using unsafePerformIO

Dinh Tien Tuan Anh tuananhbirm at hotmail.com
Mon Aug 1 07:24:49 EDT 2005


>So that's not safe, and thus it should be in the IO monad.

How can i handle a lazy list with IO monad.
For example, function

co (x:xs)
          ¦c ==1          = 1:co (xs)
          ¦c == 2         = 0:co (xs)
          where c = unsafePerformIO(f (x:xs))

will be written without unsafePerformIO:
    co' (x:xs) = do
                       c1 <- co' xs
                       c<- f (x:xs)
                       if (c==1)
                           then return 1:c1
                           else return 0:c1


AFAICS, co' does not do lazy evaluation, so wont print any element of the 
list.
Can lazy evaluation be integrated with IO monad ?


Cheers
TuanAnh

_________________________________________________________________
Want to block unwanted pop-ups? Download the free MSN Toolbar now!  
http://toolbar.msn.co.uk/



More information about the Haskell-Cafe mailing list