タグ

Groovyに関するmasa8aurumのブックマーク (6)

  • Does groovy call partial application 'currying'?

    masa8aurum
    masa8aurum 2018/05/26
    Groovy では関数の部分適用のことをなぜか「カリー化」と間違って呼んでいる件
  • お前に本当のカリー化を見せてやろう、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
  • カリー化 != 部分適用 - kmizuの日記

    最近、ネット上でカリー化に関する記事を読んでいると、特にGroovy界隈でカリー化に関して誤解がまかり通っているようなので(特に実用的なGroovy: カレー化クロージャーによるファンクショナル・プログラミングはひどい。そもそも、Groovyの標準ライブラリ自体がカリー化を行うための関数ではないものにcurryとか付けてるから仕方無いのかもしれんが)、一言言っておく。 カリー化というのは、Groovyで言うと、 def add = {x, y -> x + y} のように、xとyという複数の引数を取って値を返す関数を def add = {x -> {y -> x + y}} //間違ってパースできないコードになっていたので修正(12/17) のように、一つの引数xをとって、「yを引数にとって値を返す関数」を値として返すような関数に変換すること、あるいは最初からそのように表現することを言う

    カリー化 != 部分適用 - kmizuの日記
    masa8aurum
    masa8aurum 2018/05/26
    “特にGroovy界隈でカリー化に関して誤解がまかり通っている”
  • カリー化と部分適用の違いと誤用

    kmizu @kmizu 正直に言うと、Groovy自体は別に好きでも嫌いでもないのだけど、カリー化してないのにcurryとかいうメソッド名付けてたり(標準で)、概念の無理解が目立つ部分があって、その辺がちょっと…という思いがあったり。 #scalajp #groovy 2011-09-04 19:43:37

    カリー化と部分適用の違いと誤用
  • Groovy 入門

    2009.3.19 - 2009.4.16 - 2009.7.24 (鈴) 2011.3.23 リンク追加等 2009.4.16 時点のページ 1. はじめに 2. てほどきとインストール 3. 10 分で分かる Groovy の大半 4. もっとスクリプト言語らしく 5. クロージャ 6. おわりに 7. 参考文献 付録 1. Emacs 編集モード 付録 2. NetBeans プラグイン Groovy 応用: 遅延評価によるフィボナッチ数の計算   2009.4.8 Groovy 応用: Struts への透過的な適用   2011.3.23 1. はじめに Groovy は主に Ruby に強くインスパイアされた Java の1方言 である。 その処理系は標準的な Java VM 上で動作し,標準的な Java 言語によるプログラムと同じバイナリ形式 (class ファイル)

  • Groovyのクロージャはちゃんとしているか? - uehaj's blog

    先日参加したStartupGroovy #1にて、参加者の方から「Groovyのクロージャはちゃんとしたクロージャか?」という質問がありました*1。 クロージャが「ちゃんとしている」とは何か 「クロージャがちゃんとしてる」とは何を意味するか、あるいは「ちゃんとしたクロージャとは何か」は、良く考えると結構難しい*2です。でもここではあまり厳密に考えないで、 「クロージャ中から参照される変数のスコープと生存期間に関して、『仮にその場所にあるのがクロージャではなくブロックで書かれていた』と想定したとき、それと同じように動作すること」 とでもしておきます*3。オレオレ定義です。 言いかえると、クロージャが「ブロックを偽装したメソッド」だとして、その偽装がうまくいっている、ということです。 さて、Groovyの現在の実装においては、クロージャ中のコード(に対応するバイトコード)は、そのクロージャが置

    Groovyのクロージャはちゃんとしているか? - uehaj's blog
    masa8aurum
    masa8aurum 2016/02/01
    「クロージャとは何か」についての考えを元に実験・考察している
  • 1