>>> stdoutLn $ yield "hello" hello
>>> S.sum $ do {yield 1; yield 2; yield 3} 6 :> ()
>>> let number = lift (putStrLn "Enter a number:") >> lift readLn >>= yield :: Stream (Of Int) IO () >>> S.toList $ do {number; number; number} Enter a number: 1<Enter> Enter a number: 2<Enter> Enter a number: 3<Enter> [1,2,3] :> ()
lift :: (Monad m, Functor f) => m r -> Stream f m r yields :: (Monad m, Functor f) => f r -> Stream f m rViewed in another light, it is like a functor-general version of yield:
S.yield a = yields (a :> ())