Monad应该就是最合适的泛函数据类型了。...这个T指的是变形器Transformer,意思是用它可以堆砌(stacking)context。...在scalaz里是这样定义的:scalaz/ReaderWriterStateT.scala
/** A monad transformer stack yielding `(R, S1) => F[(...F.map(ma.run(r, s)) { case (w, a, s1) => (w, (a, w), s1)})
}
我们示范用这个ReaderWriterState来写一段程序:模拟一段通讯端口使用程序并把使用情况记录下来...先传入一个端口号,在程序中可以重设使用的端口号:
1 val program: ReaderWriterState[Config, List[String], Int, Int] = for {
2