問題タブ [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 に答える
10425 参照

python - functools.partial は、位置引数をキーワード引数として使用したい

だから私は理解しようとしていますpartial:

の:

の:

キーワード引数として使用するとTypeError消えます:y

の:

何が原因TypeErrorですか?

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

haskell - 関数合成 - Haskell

Project Eulerの質問に対する私の試みによって生成された別の質問(前の質問の続き)。次の行が理解できません。

具体的には

ghci の map の最初の引数の型シグネチャは [c] -> c:

from ghciの型シグネチャmap (product . take 13)は [[b]] -> [b] です:

map の最初の引数は関数でなければならないので、 [[b]] はリストのリストを参照するのではなく、 によって生成された (部分的に適用された) 関数のリストを参照し(product . take 13)、2 番目の引数はから来る部分関数 (tails number)

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

haskell - 部分的に適用された関数で内部をキャッシュする

そのような関数を想像してください:

その関数は、 aおよびその他の値IOを使用していくつかのことを実行します。値は に渡す必要があり、次Fooの方法で取得できます。FoobarIO

現在、ABCおよびXはすべて単純な純粋な値です。私はむしろそのようなbar機能が欲しいです:

そして、値を使用して関数Fooで生成されます。私がそれを行う場合:barX

f :: A -> B -> C -> IO (). その関数を何回か呼んでもX部分適用で値は変わらないのですが、IO効果なので毎回発生してしまいます。生成されたクロージャに対して、値が一度生成されるように、ある種のキャッシュを実行するネイティブ組み込みの ghc の方法はありますか? Fooそれはすべてボクシングに関連していると思いますが、IORefのパラメーターを展開するdirty を使用せずにそれを行う方法がわかりませんでしbarた。これは醜いです。

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

function - Haskell での関数適用

OK、長い一日だったので、私の脳は Haskell レベルで機能していないかもしれませんが、「Learn You a Haskell」の 1 つの例を理解できません。

このセクションは$ を使用した Function Application と$呼ばれ、定義方法の例があります。

これまでのところ、すべてが明らかです。最後の例を除いて、このセクションのすべての例を理解しています。

ここでは($ 3)、関数のリスト全体にマップし、それらの関数を に適用した結果を取得し3ます。しかし、これはどのように可能ですか?

最初のコード スニペットから、最初の引数が関数であることは明らかです。次のように書くこともできます。

($ 3)これは function の部分的な適用ですが、 function の位置$に進みます3! それで3、関数か何かになるはずですか?

別の謎があります: 一体何(4+)ですか? (+4)関数 の部分適用であることはわかってい+ますが、関数 の(4+)部分適用でよいの4でしょうか? ナンセンス。ここではどのようなトリックが機能しますか?

0 投票する
5 に答える
2453 参照

haskell - 複数の引数を持つ Haskell の部分的な適用

ある関数 f(x1,x2,x3,..,xN) が与えられた場合、いくつかの場所で部分的に適用すると便利なことがよくあります。たとえば、N=3 の場合、g(x)=f(1,x,3) と定義できます。しかし、Haskell の標準的な部分適用はこのようには機能せず、最初の引数を修正することによって関数を部分的に適用することしかできません (すべての関数は実際には 1 つの引数しかとらないため)。このようなことを行う簡単な方法はありますか:

の値を出力してf 1 2 3?もちろん、ラムダ関数を実行することもできます

しかし、これは非常に読みにくいと思います。たとえば、Mathematica では次のように動作しますが、これは非常に優れています。

出力付きf[1,2,3]

編集:動機についてもっと何か言うべきかもしれません。このような部分的に適用された関数を、ポイント スタイルの構成、つまり次のような式で使用したいと思います。

取得するh 3 = g(f(k(3),2))

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

haskell - haskellでパラメーターなしで関数を定義できるのはなぜですか

関数 addOne を作成するために部分的に適用する関数 add があります。

addOne は明示的なパラメーターで定義できます

または明示的なパラメーターなし

4 つの質問があります。

  1. 明示的なパラメーターなしで新しい関数を定義できるのはなぜですか?
  2. これら2つの定義に違いはありますか?
  3. パラメータなしで関数を定義できる時期はいつわかりますか?
  4. どの定義が優先され、いつですか?
0 投票する
1 に答える
146 参照

scala - Scala:「foreach」でカリー化された関数を使用してファイルから行を読み取る?

ファイルから行を読み取る 'foreach' でカリー化された関数を使用しようとしています:

何らかの理由で、次のステートメントのどちらもありません。

任意の出力を生成します。なんで?

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

f# - このポイントフリーの F# 関数の動作が、ポイントフリーでないバージョンと異なるのはなぜですか?

次の F# を検討してください:-

関数getValFromMapPartialgetValFromMapPartialAndTacitは、私の考えでは同一です。F# は、それらがまったく同じ型を持っていると言います: (string -> int). それでも、それらは非常に異なる動作をし、非常に異なる方法でコンパイルされます。dotPeek を使用して逆コンパイルすると、それはgetValFromMapPartialメソッドであることがわかりますが、ctor でgetValFromMapPartialAndTacit初期化されるフィールドです。

getValFromMapPartialAndTacitF# は、最高の警告レベル (VS 2012 と 2013 の両方) でも、について文句を言いません。それでも、上記のサンプルでこの関数を呼び出すと失敗します。おそらく、someMapその可変性にもかかわらず、 の最初の空のバージョンがラップされているためです。

これら2つの機能に違いがあるのはなぜですか? 暗黙的/ポイントフリー バージョンが失敗する可能性があるという F# からの警告があるはずですか?