-- FIXME move to stream-core library {-# LANGUAGE RankNTypes #-} {-# LANGUAGE GADTs #-} module Stream.Core.Internal where data Step s o r = Done r | Yield s o | Skip s data StreamT o m r = forall s. StreamT (s -> m (Step s o r)) (forall b. (s -> m b) -> m b)