Functional Reactive Programming(FRP)の眼目の一つはMonadic Programming(MP)によるストリーミング処理です。 MPでFRPを記述できることで安全なプログラムを簡単に書くことができるようになります。 そこで今回は「Scala的状態機械/FP編」で作成したProcessモナド版CSVパーサーをストリーミング処理に適用してみます。 準備Scala的状態機械/OOP編で作成した状態遷移を記述した代数的データ型ParseStateをストリーミング用に一部手直しします。 package sample sealed trait ParseState { def event(c: Char): ParseState def endEvent(): EndState } case object InitState extends ParseState {