問題タブ [partial-application]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
370 参照

list - zip 関数には 2 番目のリストも必要です。引数リストが 1 つしかない場合はどうすればよいですか

私は Haskell の学習を開始し、素敵な演習を見つけました。それは次のとおりです。

だから、演習は私が残りを埋めようとすることを望んでいます。この関数は次のことを行う必要があります: 例: grouping 2 ['Mark','Hanna','Robert','Mike','Jimmy'] = [(1,'Mark'),(2,'Hanna'),(1,'Robert'),(2,'Mike'),(1,'Jimmy')].

そのため、2 人の学生で構成されるチームを構築しています。最後の学生「ジミー」にはチームメイトがいません。

次に、事前定義された関数が何をするかについても調べますzip。2 つのリスト引数を取得し、リストの各要素をタプルに接続して、タプルのリストを作成します。

私の考え:1)「グラブ」と「無限」の2つの機能を構築しようとしています。彼らは次のように見えます:

だから、彼らがやっていることは次のとおりです。infinite私は無限リストを作成したいです。そして、その要素をgrap取る必要があります。ngrap 2 (infinite 1) = [1,2]

これら 2 つをwhere宣言の最初の行で使用して、上記の特定の機能を実行します。ので、私は持っています:

だから、xs今私の最初のリストzip、特に整数リストです。

しかし今、私の質問:zip事前定義された関数として、特に学生の名前のリストである 2 番目のリストも必要ですが、指定された関数では、zip に引数を 1 つだけ、つまりysリストとして与えます。どうすればそれを理解できますか?

0 投票する
2 に答える
78 参照

haskell - ミランダ タイプエラー

誰がどこが間違っているのか教えてもらえますか?

私の理解は次fのとおりです。左側には1つの引数がありますが、右側には2つの引数がありますか?

詳細な説明はありますか?

0 投票する
1 に答える
230 参照

python - Python 2.7.x での部分関数の動的生成

次のラムダから IPython シェルで関数を動的に作成したいとします。

ci新しい値に固定されます。次のようなものになります(create_new_f私が探しているものです)。

私は次のように使用functools.partialしてみました:

しかし、これを IPythonの組み込みシェルで実行すると、次のようになります。

AttributeError: 'functools.partial' object has no attribute '__module__'

おそらくデコレータを使用して、これを行うの方法はありますか?

トピックの背景:

繰り返しますが、私が探しているのは、これを行うの方法です。

0 投票する
2 に答える
1130 参照

haskell - 組み込み関数があまりにも少ない引数に適用されると、弱い頭部正規形であると見なされるのはなぜですか?

Haskell の定義は次のように述べています。

次のいずれかの場合、式は弱主正規形 (WHNF) です。

  • True、Just (square 42)、(:) 1 などのコンストラクター (最終的に引数に適用される)
  • (+) 2 や sqrt のように、あまりにも少ない引数 (おそらくなし) に適用される組み込み関数。
  • またはラムダ抽象 \x -> 式。

組み込み関数が特別な扱いを受けるのはなぜですか? ラムダ計算によれば、部分的に適用された関数と他の関数との間に違いはありません。これは、最後に引数関数が 1 つしかないためです。

0 投票する
2 に答える
44 参照

javascript - ループ全体で同じデータを参照する変数に関するJSのルールは何ですか?

部分的なアプリケーションを使用してデータをコールバックに渡す必要がありましたが、その後のループの実行によってコールバックに渡すデータが変更されないようにするために、間接レイヤーが必要であることがわかりました。

非常に単純な作業例については、こちらを参照してください: http://jsfiddle.net/s5gVj/

(jsfiddleが自明である場合は、以下の質問に直接スキップしてください)

間接性なしで

これにより、ラベルは常に「ボタン 1 が押されました」に設定されます。

これは、どのボタンが押されたかに関係なく発生します。

関数を介して間接的に

一方、途中で関数を使用すると問題が修正されます

最初のボタンの場合、結果は「ボタン 0 が押されました」になります。

2番目のボタンの場合、「ボタン1が押されました」になります。


なぜこれが起こるのですか?変数がコピーされ、同じデータへの参照がなくなることを保証する関数呼び出しに何か特別なことがありますか?それとも何か他のことが起こっていますか?

for ループ内で宣言された変数が各反復で再作成されることを期待していたので、各反復は個別に行われますが、そうではないと思いますか?

0 投票する
1 に答える
1052 参照

python - functools.partial と通常の Python 関数

パーシャルとそれらをいつ使用するかについて学んでいます。この page about partials vs lambdasでは、受け入れられた答えは、partialsoverの利点の 1 つはlambdas、パーシャルがイントロスペクションに役立つ属性を持っていることであると説明しています。したがって、パーシャルを使用して次のことができます。

実際、次のようにすることはできませんlambdas

しかし実際には、「通常の」Python 関数でもそれを行うことはできません。

パーシャルが通常の Python 関数よりも多くの機能を備えているのはなぜですか? そのような設計の意図は何ですか?イントロスペクションは通常の機能には役に立たないと考えられていますか?