タグ

ブックマーク / ha-tan.hatenadiary.org (1)

  • Rubyでもカリー化 - 趣味的にっき

    関数型言語ラブな人は、Rubyでもカリー化したくなってくると思います(特にHaskellラブな人はその傾向が強いように思います)。ということで、こんなメソッドを書いてみました。 module Kernel def curry(sym, *a1) f = sym.respond_to?(:call) ? sym : method(sym) lambda do |*a2| f.call(*(a1 + a2)) end end end 使い方はこんな感じです。mapの例を見てください。あぁ何て美しいのでしょう。 def add(a, b) a + b end p curry(:add, 2)[3] # => 5 p curry(method(:add), 2)[3] # => 5 p curry(lambda {|a, b| a * b}, 2)[3] # => 6 p (1 .. 10).ma

    Rubyでもカリー化 - 趣味的にっき
    yogasa
    yogasa 2010/11/24
  • 1