カリー化と部分適用の違いと誤用 ~ side:C++ ~

6
前へ 1 ・・ 9 10
🎀にゃおきゃっと🐈Nyaocat🎀 @nyaocat

@kikairoya あー、確かに Haskell だと自動的に currying が行われるから curried form を知らなくても扱えると

2011-09-05 09:20:04
にゃははー仙人 @Flast_RO

haskellwikiのcurryingを眺めたけど私の教えてほしいことは書いてなかった

2011-09-05 09:22:27
🎀にゃおきゃっと🐈Nyaocat🎀 @nyaocat

段々自分も実は良く分かってない感がしてきた

2011-09-05 09:35:21
藤枝和宏 @kfujieda

@kikairoya そうですか。どうもありがとう。

2011-09-05 09:51:31
KIKUCHI Yutaka 🌗 菊池 豊 @kikuyuta

部分適用って部分評価な感じの概念?質問ばかりで恐縮です。 RT @kfujieda: @kikuyuta 昨晩@kikairoya さんという人とカリー化と部分適用について話していたんです。

2011-09-05 10:04:49
めるぽん.c @melponn

@Flast_RO 何がやりたいのかによると思いますけど、 curry と uncurry が逆じゃないですかね?

2011-09-05 10:16:53
にゃははー仙人 @Flast_RO

@melponn あ、なんか消えてる... んーcurryしてuncurryすれば元の関数に近いなにかが出てくるはずと思ってやったら違いましたーということです

2011-09-05 10:20:18
めるぽん.c @melponn

@Flast_RO それなら f (a,b) = error "hoge" な関数を curry して uncurry すれば元の関数っぽいのになるはずです

2011-09-05 10:22:11
にゃははー仙人 @Flast_RO

@melponn それはそうなんですが、元からカリー化する必要のないような関数を投げると何もされないと思ったら引数増えましたーということをですね...

2011-09-05 10:23:38
めるぽん.c @melponn

@Flast_RO :t curry で現れる ((a,b)->c) の部分が :t f で現れる最初の t に置き換えられただけでは?

2011-09-05 10:27:44
めるぽん.c @melponn

@Flast_RO ((a,b)->c)->a->b->c は (t->(t1->t2))->a->b->c になって c がt1->t2 で最初の引数が無くなるので a->b->(t1->t2) 的な。

2011-09-05 10:31:48
めるぽん.c @melponn

@Flast_RO あれ、でもやっぱり f は元に戻ってるような? curry するなら t が (a,b) である必要があるってことが追加されただけで。

2011-09-05 10:36:07
にゃははー仙人 @Flast_RO

@melponn 私はfが元からカリー化されてるからcurryに投げてもそのまま帰ってきてuncurryすると(t, t1) -> t2になるんではないか?と思ったのです

2011-09-05 10:38:10
めるぽん.c @melponn

@Flast_RO f は t->(t1->t2) な関数なので、((a,b)->c) の (a,b) の部分が t として判断されて、c の部分が (t1->t2) と判断されるんだと思います

2011-09-05 10:41:29
KIKUCHI Yutaka 🌗 菊池 豊 @kikuyuta

15年ほど離れててシナプスが錆び付いています。菊池の理解は「eager な部分評価を haskel が実装してて部分適用と読んでいる。それを説明するのに currying を使うと微妙なずれが気持ち悪い」かな @kikuyuta @kfujieda @kikairoya

2011-09-05 10:42:06
にゃははー仙人 @Flast_RO

@melponn はーなるほどーそうすると確かにtは(a, b)にならざるを得ないですね

2011-09-05 10:42:23
めるぽん.c @melponn

curry 関数で何も起こらないという考え方が意外だったっていう・・・どっちかっていうと型エラーとかの方になりそうな感じ。

2011-09-05 10:46:14
めるぽん.c @melponn

@Flast_RO なので a とか b とかじゃなくて Int->Int->Int な関数を curry に渡すと型エラーになりますね

2011-09-05 10:47:12
めるぽん.c @melponn

a->b->c の -> は何度見ても左結合にしか見えないしそう考えててそんなに困ったこと無いんだけど、でもやっぱり右結合なんですよねっていう・・・

2011-09-05 11:27:11
前へ 1 ・・ 9 10