We use runEffect
to run our Pipe
:
main :: IO ()
main = do
runEffect $ naturalsUntil 10 >-> intToStr >-> fancyPrint
Note that runEffect
requires an Effect
, which is a self-contained Proxy
with no inputs or outputs:
runEffect :: Monad m => Effect m r -> m r
type Effect = Proxy X () () X
(where X
is the empty type, also known as Void
).