@kazzna自己紹介Scalaを趣味で使い始めて約半年。最近はGo言語で簡単なスクリプトを書いています。以下のようなScalaの文法を理解している人。varifwhile非対象者Scalaのコンパイルに成功したことがある人。Theorem*ってご存知でしょうか。組み合わせに変換できる」というすばらしい定理です。逐次Scalaではコードは上から順に実行されます。参考に、以下はmapの型。!!ここで次のような型を導入します。A))「Stack[Int]を受け取って、変更したStack[Int]と付属の値Aを返す関数」をパラメータとして持つ型とても関数型っぽいですね。コンパニオンにpushとpopを。a))}☆手続き型では、まずStackがあって、そこに値をpushする。3)stack.push(12)☆関数型では、まず値をpushする関数があって、そこに対象のStackを渡す。3))パラダイムシフト!!これにflatMapを生やしましょう。B)を返さないといけないので、調整。a)を作りだし、f(a)で2つ目のStackActionを作成。できたStackActionをrun(s2)して、結果を取得。StackAction.pop.run(s)StackAction.push(a).run(s2)}ついでにmapも。StackAction.point(f(a)))}すると、swapがこう書けます。4)入れ子のflatMapだ!!これでforが使えますね。4)これの素晴らしいところは、組み上げた結果もStackActionなことです。2まとめforは大量のflatMapを読みやすく記述できる。flatMapで帰ってくる外の型は必ずflatMapの元の型と同じ。forで作った結果をforの中で使える。ちなみにこれを抽象化したものがStateと呼ばれます。forに慣れることができるのではと思います。