Как заменить программу, написанную в виде последовательного потока переходов состояний, на scalaz-stream?

Я пытаюсь понять, как реорганизовать программу, которую я раньше написал бы как последовательность переходов состояний: У меня есть бизнес-логика: type In = Long type Count = Int type Out = Count type S = Map[Int, Count] val inputToIn: String => Option[In] = s => try Some(s.toLong) catch {...