再代入ループより高階関数の方が宣言的でシンプルに書けるけど、
map, filter あたりはともかく reduce あたりから理解があやしいヤツが出現し始める