読者です 読者をやめる 読者になる 読者になる

ついでにカリー化

ruby

カリー化 - Wikipedia

複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること。

クロージャよりもさっぱりだよ!!

サンプル

書いてみたはいいけどいまいち良さが理解できていない。
Wikipedia に出てきた除算関数

#!/usr/bin/env ruby
def div x
  return lambda{|y| x / y}
end

d1 = div 10
puts d1.call 2
# >> 5

Ruby1.9

ラムダらむだ

#!/opt/local/bin/ruby1.9
def div x
  return ->(y){ x / y }
end

d1 = div 10
puts d1.(2)

さらに悪のりしてみる

λ

#!/opt/local/bin/ruby1.9
div = ->(x){ ->(y){ x / y } }
puts div.(10).(2)

なははは。きもい!
なんか楽しくなってきた。

参考: Ruby 1.9の新しいλ式の文法がキモい件 - ’(rubikitch wanna be (a . lisper))