The "do" notation translates do {x <- a;f} into a>>=(\x -> f) However when we're working in the IO monad the semantics we want requires that the lambda expression be strict in its argument. So is this a special case for IO? If I wanted this behavior in other monads is there a way to specify that? Victor Sent from my iPhone