Scala 界隈ではお天気の次に共通の話題にできる (嘘) scala.concurrent.Future ですが、一年弱使用してきていまだにその挙動について上手く整理できておらずどことなく苦手意識がありました。例えば Future.successful(1) flatMap { x => Future.successful(2) flatMap { y => Future.successful(3) map { z => x + y + z } } } というコードを見たときに、全体としては Future[Int] 型が得られ、計算結果が 6 になるということは理解していますが、その中でどんな Future が生成されどのように最終的な結果が得られるのかはあまりイメージできていませんでした。 そこで Future とより向き合うために本実装から必要最低限のみを抽出した実装を自分で作ってみ