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

6
@ka_

ははぁ… カリー化と部分適用 (束縛) は関係ないと… なるほど…

2011-09-04 21:05:20
@ka_

純粋なラムダ計算だと,そもそも x,y,z -> V ってのが x -> (v -> (z -> V))) のような.多引数なんて無かった!

2011-09-04 21:09:45
若年寄(もう若くない) @kikairoya

curryingとbind1stを厳密に区別しないといけない理由ってなんかあるの

2011-09-04 21:21:39
若年寄(もう若くない) @kikairoya

というかbind1stはcurryingそのものだと思うんだけど、bindって名前がついてる以上bindなんだよな、じゃあ両者の境界は?

2011-09-04 21:23:07
@ka_

λx. λy. λz. V に,部分適用を行う関数はどう書けばいいんだ?

2011-09-04 21:24:42
若年寄(もう若くない) @kikairoya

f = a -> b -> c と f = (a, b) -> c を厳密に区別しないと困る場面ってどんなんだろう、区別したがる人が居るからにはそういう場面があるはずなんだけど実際の問題を見たことが無い .

2011-09-04 21:26:12
若年寄(もう若くない) @kikairoya

@finalfusion よくわからんことをよくわからんって呟いたら喧嘩売ってることになるんですか

2011-09-04 21:29:35
若年寄(もう若くない) @kikairoya

結局「curryingとbindの区別がつかない」人が居るってのは、区別する必要がある場面に出くわしたことないからじゃないのかなあ、とか。(数学理論とかじゃなくて実際のプログラミングの問題で)curryingじゃないと解決できない問題があるんならソレ見せれば一発で分かるようになる

2011-09-04 21:31:51
@ka_

えー bind の実装の仕方が分からないクラスタなんですが

2011-09-04 21:33:51
若年寄(もう若くない) @kikairoya

もしもcurryingじゃないと解決できない問題が存在しないなら、(プログラミングの場面においては)curryingをpartial apply (bind)のサブセットとみなしても問題なかろう

2011-09-04 21:34:00
@ka_

そもそも λx. λx. x の扱い方忘れた

2011-09-04 21:38:10
藤枝和宏 @kfujieda

@kikairoya f=a->b->cのときに引数にb->cを取る関数にf(a)を食わせるとか、関数型の言語だと普通にしません?

2011-09-04 21:52:46
若年寄(もう若くない) @kikairoya

@kfujieda それは別に f = (a, b) -> c の a を部分適用したものを渡しても同じですよね

2011-09-04 21:54:53
若年寄(もう若くない) @kikairoya

@kfujieda んーということは、C++のstd::bindはその名前とは裏腹にcurryingであって、partial applyではないという認識でいいんですかね

2011-09-04 21:58:49
若年寄(もう若くない) @kikairoya

f = (a, b) -> c に a を部分適用した関数はどういう型になるん .

2011-09-04 22:06:25
kmizu @kmizu

http://t.co/2pcLWq0 んー、いや。カリー化!=部分適用、ってのはまず事実としてあるのに、用語の誤用を広めといて、それでいいじゃん、という事に私は賛同しないです。

2011-09-04 22:06:37
藤枝和宏 @kfujieda

@kikairoya あ、ごめんなさい。さっきのツイートは僕の勘違い。(a, b)->cにaを部分適用した結果はb->cです。

2011-09-04 22:08:00
kmizu @kmizu

もちろん、部分適用に相当する用語が無かったなら話はわかりますが、そういう用語はあるのだから、それ使えばいいじゃんと思うわけです。この手の話はカリー化に限らず繰り返されてきましたが、カリー化に関しては非常にまぎらわしいので、止めて欲しいなー、というのが本音です。

2011-09-04 22:08:09
若年寄(もう若くない) @kikairoya

んーこのままだとf = (a, b) -> c に対する1段階(こういう言い方するのかな?しない気がする)のcurryingとaの部分適用は同じだ、という認識になってしまうんだけれど

2011-09-04 22:11:18
kmizu @kmizu

用語の誤用に関しては色々スタンスはあると思うのですが、この件では、カリー化=部分適用、という誤解が広まることによって、カリー化という用語の意味が上書きされてしまって、カリー化という用語を(本来の意味で)実質的に使えなくなる事を私は危惧しています。

2011-09-04 22:12:43
梶本裕介 @uskz

@kikairoya fをカリー化した上で、さらにaを適用すれば、fの第一引数としてaを部分適用するのと同じことになりますね

2011-09-04 22:13:51
若年寄(もう若くない) @kikairoya

…とここまで喚き散らしたところで、 http://t.co/8eLdMJC を読んでどこに誤解があったのかわかった

2011-09-04 22:14:08
1 ・・ 10 次へ