図で分かるfoldLeft

foldLeft って map, filter, foreach といった他の高階関数に比べて難しい気がします。多分いきなり「畳込み」とか「アキュムレータ」とか言うからだめで、手続き脳フレンドリーな言い方は「ループの変形」なんじゃないかと思いました。実は書くだけだったら手続き的ループから機械的に変換できます。



こういう目で見ると、map, filter が foldLeft で実装しろみたいなありがちな練習問題もとても簡単ですね。
ちょっと複雑なものも一回ループで書いてしまってそれから foldLeft に変形するというズルができます。