基本上我想这个转换: def data(block: T => Unit)
到Stream(dataToStream是为此转换的假想功能): val dataStream: Stream[T] = dataToStream(data)
我想这问题可以通过延续解决: // let's assume that we don't know how data is implemented
//
这是续单子是如何定义的: newtype Cont r a = Cont { runCont :: (a -> r) -> r }
instance Monad (Cont r) where
return a = Cont ($ a)
m >>= k = Cont $ \c -> runCont m $ \a -> runCont (k a) c
你能解释一下如何以及为