sclib.z
minimalistic State monad transformer
State
scala> import sclib.z._ scala> import sclib.ops.`try`._ scala> import scala.util.Try scala> val pf = StateT{i: Int => if(i < 10) (i, i + 1).success else "BOOM".failure} scala> val action = for { | a <- pf | b <- pf | } yield a -> b scala> action.run(0) res1: scala.util.Try[((Int, Int), Int)] = Success(((0,1),2)) scala> action.run(10) res2: scala.util.Try[((Int, Int), Int)] = Failure(java.lang.Exception: BOOM)
minimalistic
State
monad transformer