Try to use Monad State instead fun = do put [] x <- do s <- get foo 1 s y <- do s <- get bar x s z <- do s <- get baz x y s -- View this message in context: http://haskell.1045720.n5.nabble.com/Proposal-Non-recursive-let-tp5732690p5732747.html Sent from the Haskell - Haskell-prime mailing list archive at Nabble.com.