[過去ログ] + JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
68(5): 2016/07/13(水)22:50 ID:2JhFq5Nw(2/3) AAS
>>67
それは部分適用な。
外部リンク:qiita.com
> カリー化と部分適用はよく混同されるので注意が必要です。
しかもそれthisがnull(グローバルオブジェクト=ブラウザならwindow)に
変更されているから(それがbindの本質的な機能だから当然だが)
カリー化はthisを変更したりしない。
これでbindとかリー化と部分適用の違いがわかるだろ
var obj = (function () {
function add (x, y) { return this.location + (x + y); }
省8
70(1): 2016/07/14(木)00:19 ID:rtzz+yi0(1) AAS
>>68
Good Partsのコードではthis値を使っていなかったからnullにしたけど、必要なら該当オブジェクトにbindすればいいよ
72: 2016/07/14(木)01:29 ID:9qkjMq+e(2/7) AAS
> Good Partsのコードではthis値を使っていなかったからnullにしたけど、必要なら該当オブジェクトにbindすればいいよ
>>68の例で言えば、必要なオブジェクトはobjです。
どうやりますか?
> var add1 = add.bind(null, 1); // thisのbind + 部分適用
この行のnullをobjに変えてもcurryと同じ動きにはなりませんよ。
bindは現在のthisとは無関係に固定のオブジェクトに
結びつけるのでbindを使ってcurryは実装できません。
74: 2016/07/14(木)07:02 ID:ljYKCB29(1/3) AAS
>>68
オレの知ってるカリー化と部分適用の定義と違うんだけど・・・・
>外部リンク:qiita.com
>関数を引数1つずつに分割してネストさせることをカリー化と呼びます。
>一部の引数を固定化して新しい関数を作り出すことを部分適用と呼びます。
こんな定義始めて聞いた。
「カリー化は引数の数を1つにしますが,
単に引数の数を減らすことを「部分適用」と呼びます。」
(ソース:日経ソフトウェア5月号
基本からしっかり学ぶJavaScipt 第4回)
省3
82: 2016/07/14(木)22:33 ID:9qkjMq+e(5/7) AAS
>>79
>>68でちゃんと書いてるのに
分かってないのかな?
> var curried_add = _.curry(add); // カリー化
> var add2 = curried_add(2); // 部分適用
curried_addっていうのは、curried_add(2)とすることで
部分適用ができる関数。
単なるaddはそんなことはできない。
addからcurried_addを作るのがカリー化
省3
100(2): 2016/07/15(金)02:09 ID:bBHS6mCb(1/3) AAS
>>97-98
言いたいことはわかるが、>>68を見てると明らかに原文のコードを読まずに指摘していたようだったからな
Good Partsのコードに言及した回答(>>67)に「カリー化」と「部分適用」の定義の違いを問う(>>68)のがそもそもの間違い
>>63は「Good Partsのコード === カリー化」と認識しているわけだが、そのコードに対しての解は間違ってはいなかった
「カリー化」と「部分適用」の定義説明は全く別個の問題なので、両者が衝突する理由は何もない
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.031s