タグ

curryに関するh6nのブックマーク (3)

  • CoffeeScriptでカリー化関数を書いて遊ぶ - あと味

    CoffeeScript、わず嫌いしてたのですが、使ってみると便利で、書いてて楽しいですね。 記法が簡潔なので、JavaScriptだとreturn function地獄になるカリー化関数書くのが苦ではなかったので、カリー化関数を書いて遊んでみました。 calc.coffee これがCoffeeScriptのソース。 calc.js これがコンパイルされたJavaScriptのソース。 カリー化関数 「お前のプログラム柔らかいな、柔軟剤使ったろ?」ってくらいプログラムが柔軟になりますね。 今回のソースでは、オペレーターを自分でプチ定義しちゃってるような感覚があります。 このテクニックを実務で使ったことはありませんが、CoffeeScriptだと、見た目も簡潔で良いかも。*1 カッコが省略できたら、会話するようにプログラミングができるのに。 CoffeeScript プログラミング初学者に

    CoffeeScriptでカリー化関数を書いて遊ぶ - あと味
  • お前に本当のカリー化を見せてやろう、Groovyで - No Programming, No Life

    はじめに 思いの外話題になっているようなので、Groovyでちゃんとしたカリー化をする関数を書いてみました。ちょっとタイトルはあれですがお許し下さい。 こんな感じでいいんですよね?(ツッコミ大歓迎) ここでは、addが引数を3つ取って、加算するクロージャです。メソッドrealCurryはクロージャを引数にとり、カリー化したクロージャを返却します。 add = {a, b, c -> a + b + c } ↓カリー化! curriedAdd = {a -> {b -> {c -> a + b + c}}} 当はClosure.metaClass.getCurryとかでやりたかったんですけど、どうもdelegateまわりが変な挙動をするのでバッサリ諦めました。あと、都合によりアンカリー化は実装しておりませぬ。 foldLeftで使ってみる (2011-09-06 追記) カリー化 != 部

    お前に本当のカリー化を見せてやろう、Groovyで - No Programming, No Life
  • [#GROOVY-4998] Real currying support - jira.codehaus.org

    Hi. Groovy's Closure have a name of method 'curry'. But this is not work for a real currying, it work as a partial function application. So, I wrote method of 'Real currying'. Referenced http://en.wikipedia.org/wiki/Currying Closure add = {a, b, c -> a + b + c } // Closure of adding 3 arguments. assert add(1, 2, 3) == realCurry(add)(1)(2)(3) assert 6 == add(1, 2, 3) def curriedAdd = realCurry(ad

  • 1