51
ログインして広告を非表示にする

コメント

  • watcher @a_watcher 2011-09-05 02:07:14
    うーん、知らない人がこれ読んでも何もクリアにならない予感。140文字でまとめようよ。「curry化=複数引数の関数f(x,y,z)と最初の実引数Xをとり、二番目以降の引数をとる関数f'(y,z)を返す。部分適用=複数引数の関数f(x,y,z)の一部引数に実引数を束縛(例えばx=X,y=Y)した関数f'(z)≡f(x=X,y=Y,z)を返す。相違は引数の適用順」で問題あるのかなぁ。
  • propella @propella 2011-09-05 04:51:13
    @a_watcher これはややこしい。@everpeace さんのおっしゃるとおり、カリー化には適用が含まれないので適用の順序は関係ないんじゃないですか?
  • propella @propella 2011-09-05 05:00:12
    しかし、私も最近まで部分適用の事をカリー化と思っていた。私がカリー化だと思っていた操作は部分適用で、Haskell の curry や uncurry 関数は逆に違和感があった。カリー化がインパクトありすぎてドキュメントの中で部分適用という言葉を使わなさすぎなのでは。
  • propella @propella 2011-09-05 05:07:02
    あと、さすがに動的言語でも関数の作成と適用は別の概念なので、動的言語だからごっちゃになるわけなくて、たまたまでしょう。
  • 水島宏太(真剣にダイエット中) @kmizu 2011-09-05 06:09:58
    短くまとめるのはいいのですが、「curry化=複数引数の関数f(x,y,z)と最初の実引数Xをとり、二番目以降の引数をとる関数f'(y,z)を返す。」ここがダウトです。最初の実引数は無関係で、「複数引数の関数f(x,y,z)を取り、関数f`=(fn(x) fn(y) fn(x) ...)を返す。」辺りでしょうか。
  • watcher @a_watcher 2011-09-05 08:22:33
    @kmizu うーん、関数fの引数をn個として、curry化をn回行えば1引数の関数n個の合成のような形に表現できるけど、普通は私の先の定義で充分でしょう。「ダウト」と宣言するような話ではない。
  • ふも@開発 @fumokmm 2011-09-05 12:57:37
    Groovyで本当のカリー化をしてみたブログへのリンクのつぶやきを追加しました。
  • watcher @a_watcher 2011-09-05 13:46:59
    kmizuさんの個別mentionによるご指摘その他に基づき訂正。「Curry化の例:関数f(x,y,z)をとり、引数を一個ずつとる高階関数g = (\x ->(\y ->(\z ->f(x,y,z))))を返す。部分適用の例:関数f(x,y,z)の一部引数に実引数を束縛(例えばx=X,y=Y)した関数h(z)≡f(x=X,y=Y,z)を返す。」「前者にはおそらく厳密な定義があり(要確認)、引数の適用順番に縛りがある。後者はより広範な概念で、引数の適用順番に必ずしも縛りがない」
  • watcher @a_watcher 2011-09-05 14:00:50
    って、everpeaceさんtweetで言いつくされていますよね。http://twitter.com/everpeace/status/110320382925475841 (一応最初から認識はしていたけど)
  • たかぎ @tkghs 2012-08-14 04:01:30
    add.curry(2) は (add.curry)(2) と add.(curry(2)) のどっちなの?

カテゴリーからまとめを探す

「その他」に関連するカテゴリー