問題タブ [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.
python - functools.partial は、位置引数をキーワード引数として使用したい
だから私は理解しようとしていますpartial
:
の:
の:
キーワード引数として使用するとTypeError
消えます:y
の:
何が原因TypeError
ですか?
haskell - 関数合成 - Haskell
Project Eulerの質問に対する私の試みによって生成された別の質問(前の質問の続き)。次の行が理解できません。
具体的には
ghci の map の最初の引数の型シグネチャは [c] -> c:
from ghciの型シグネチャmap (product . take 13)
は [[b]] -> [b] です:
map の最初の引数は関数でなければならないので、 [[b]] はリストのリストを参照するのではなく、 によって生成された (部分的に適用された) 関数のリストを参照し(product . take 13)
、2 番目の引数はから来る部分関数 (tails number)
?
haskell - 部分的に適用された関数で内部をキャッシュする
そのような関数を想像してください:
その関数は、 aおよびその他の値IO
を使用していくつかのことを実行します。値は に渡す必要があり、次Foo
の方法で取得できます。Foo
bar
IO
現在、A
、B
、C
およびX
はすべて単純な純粋な値です。私はむしろそのようなbar
機能が欲しいです:
そして、値を使用して関数Foo
で生成されます。私がそれを行う場合:bar
X
f :: A -> B -> C -> IO ()
. その関数を何回か呼んでもX
部分適用で値は変わらないのですが、IO
効果なので毎回発生してしまいます。生成されたクロージャに対して、値が一度生成されるように、ある種のキャッシュを実行するネイティブの組み込みの ghc の方法はありますか? Foo
それはすべてボクシングに関連していると思いますが、IORef
のパラメーターを展開するdirty を使用せずにそれを行う方法がわかりませんでしbar
た。これは醜いです。
function - Haskell での関数適用
OK、長い一日だったので、私の脳は Haskell レベルで機能していないかもしれませんが、「Learn You a Haskell」の 1 つの例を理解できません。
このセクションは$ を使用した Function Application と$
呼ばれ、定義方法の例があります。
これまでのところ、すべてが明らかです。最後の例を除いて、このセクションのすべての例を理解しています。
ここでは($ 3)
、関数のリスト全体にマップし、それらの関数を に適用した結果を取得し3
ます。しかし、これはどのように可能ですか?
最初のコード スニペットから、最初の引数が関数であることは明らかです。次のように書くこともできます。
($ 3)
これは function の部分的な適用ですが、 function の位置$
に進みます3
! それで3
、関数か何かになるはずですか?
別の謎があります: 一体何(4+)
ですか? (+4)
関数 の部分適用であることはわかってい+
ますが、関数 の(4+)
部分適用でよいの4
でしょうか? ナンセンス。ここではどのようなトリックが機能しますか?
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))
。
haskell - haskellでパラメーターなしで関数を定義できるのはなぜですか
関数 addOne を作成するために部分的に適用する関数 add があります。
addOne は明示的なパラメーターで定義できます
または明示的なパラメーターなし
4 つの質問があります。
- 明示的なパラメーターなしで新しい関数を定義できるのはなぜですか?
- これら2つの定義に違いはありますか?
- パラメータなしで関数を定義できる時期はいつわかりますか?
- どの定義が優先され、いつですか?
scala - Scala:「foreach」でカリー化された関数を使用してファイルから行を読み取る?
ファイルから行を読み取る 'foreach' でカリー化された関数を使用しようとしています:
何らかの理由で、次のステートメントのどちらもありません。
任意の出力を生成します。なんで?
f# - このポイントフリーの F# 関数の動作が、ポイントフリーでないバージョンと異なるのはなぜですか?
次の F# を検討してください:-
関数getValFromMapPartial
とgetValFromMapPartialAndTacit
は、私の考えでは同一です。F# は、それらがまったく同じ型を持っていると言います: (string -> int)
. それでも、それらは非常に異なる動作をし、非常に異なる方法でコンパイルされます。dotPeek を使用して逆コンパイルすると、それはgetValFromMapPartial
メソッドであることがわかりますが、ctor でgetValFromMapPartialAndTacit
初期化されるフィールドです。
getValFromMapPartialAndTacit
F# は、最高の警告レベル (VS 2012 と 2013 の両方) でも、について文句を言いません。それでも、上記のサンプルでこの関数を呼び出すと失敗します。おそらく、someMap
その可変性にもかかわらず、 の最初の空のバージョンがラップされているためです。
これら2つの機能に違いがあるのはなぜですか? 暗黙的/ポイントフリー バージョンが失敗する可能性があるという F# からの警告があるはずですか?