On Tue, May 31, 2011 at 6:10 PM, Antoine Latter <[email protected]> wrote: > > You could use a different type: > >> type IOStream a = (a, IO (IOStream a)) > >> unfold :: ([a] -> IO a) -> IO (IOStream a) >> unfold f = >> let go prev = do >> next <- f prev >> return (next, go (next:prev)) >> in do >> z <- f [] >> go [z] > >> toList :: Int -> IOStream a -> IO [a] >> toList 0 _ = return [] >> toList n (x,rest) = do >> xs <- toList (n-1) rest >> return (x:xs) >
Let's pretend I did that right: > toList :: Int -> IOStream a -> IO [a] > toList 0 _ = return [] > toList 1 (x,_) = return [x] > toList n (x,r) = do > rest <- r > xs <- toList (n-1) rest > return (x:xs) Antoine _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
