prelude.ls記事の続き、今回はリストに適用される関数です。
関数型的拡張だと公式で主張しているだけあって、この部分は恐るべき個数……
今回はRubyのEnumerator的挙動を取る関数を取り上げていきます。
実際のところ
prelude.lsのEnumeratorモドキは
Rubyで言う所のブロック渡し……つまり
(:a..:b).map(&:upcase) #=> [:A, :B]
のような挙動を実現できます。
これに加えて、Rubyでは面倒な引数つきも実行可能です。
each
王道のeachは見た目で安心できる挙動をとります。
ただし引数つきで。
each (.push \boom), [['a'] ['b'] ['c']] #=> [['a', 'boom'], ['b', 'boom'], ['c', 'boom']]
map
map (.to-upper-case!), ['a', 'b'] #=> ['A', 'B']
map (* 2), [1 to 5] #=> [2, 4, 6, 8, 10]
reverse
あると何かと便利な逆回しも完備
ただし、これには関数は渡せません。
reverse [ \a to \c] [ 'c', 'b', 'a' ]