問題タブ [currying]

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 に答える
6002 参照

python - 関数を numpy 配列にマッピングし、パラメーターを変更する

まず、コードを示します。

ここで行っているのは、の 2 番目のパラメーターのfunc値を毎回変更して、配列に適用しようとしていることです。funcこれはSLOOOOWです(反復ごとに新しい関数を作成することは確かに役に立ちません)。また、pythonicの方法を逃したと感じています。なにか提案を?

私に2D配列を与える解決策は良い考えでしょうか? わかりませんが、そうかもしれません。

考えられる質問への回答:

  • はい、これは (広い定義を使用して)、最適化の問題です (do_something_else()これを非表示にします)
  • いいえ、scipy.optimize は機能していません。なぜなら、私はブール値を扱っていて、収束していないように見えるからです。
0 投票する
5 に答える
1552 参照

f# - F#でのカリー化とは何ですか?

重複の可能性:
関数型プログラミング:カリー化

私はここで無料のF#ウィキブックスを読んでいます:

http://en.wikibooks.org/wiki/F_Sharp_Programming

部分関数とは何かを説明するセクションがあります。F#を使用すると、関数を部分的に使用できると書かれていますが、何が起こっているのか理解できません。例として使用されている次のコードスニペットについて考えてみます。

出力は11です。しかし、私はフォローしていません。私の関数'add5ToNumber'はパラメーターを要求しないのに、なぜそれを呼び出してパラメーターを与えることができるのですか?

私は最近F#について学ぶのが本当に好きです、ベイビーステップ!

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

ruby - Rubyでの簡単なカリー化

私はルビーでカリー化をしようとしています:

エラーが発生します

func_test.rb:24:in` '

しかし、私がそうするなら

うまくいくようです。しかし、ラムダで割り当てた後にプラスを出力すると、どちらの方法でも同じタイプのオブジェクトが返されます。私は何を誤解しましたか?

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

haskell - Haskell での関数カリー化

私は機能を持っています:

OS の使用例:

2 つの質問があります。最初 - 機能しない理由:

[2、2]を取得したい。

そして2問目。pariatl 関数を作成しようとしています。このようなもの:

そのように使用するには:

しかし、私はエラーメッセージを受け取りました:

これは5月のコードでいっぱいです:

powerOf num の p の最大パワーを返します。例: 100 = 2 * 2 * 5 *5、したがって powerOf 100 2 = 2. 10 = 2 * 5、したがって powerOf 10 2 = 1.

エラーを修正するには?ありがとう。

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

haskell - カレー言語のCPS

ラムダ計算やOcamlのようなカレー言語のCPSはどのように意味がありますか?技術的には、すべての関数に1つの引数があります。したがって、そのような言語の1つにCPSバージョンの加算があるとします。

そして、私たちはそれを次のように呼びます

これは、次と同じです。

末尾呼び出しではなく、実際には複雑にネストされた式である2つの呼び出しがすでに表示されてい(cps-add random-continuation)ます。値、つまり数値を消費する関数を返し、次に別の数値を消費して両方の合計をに返す関数を返します。そのrandom-continuation。ただし、各関数に引数を1つしか与えることができないため、これをCPSに再度変換するだけでは、この値の戻りを回避することはできません。継続と「実際の」議論のための余地を作るために、少なくとも2つ必要です。

それとも私は何かを完全に見逃していますか?

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

scala - scala でジェネリックを使用して部分関数を作成するにはどうすればよいですか?

Scala 用のパフォーマンス測定ライブラリを作成しようとしています。私の考えは、実行時間を収集できるように、セクションを透過的に「マーク」することです。残念ながら、私はコンパイラを思い通りに曲げることができませんでした。

私が考えていることの確かに不自然な例:

今、これは私が得た最も遠いものです:

関数を直接使用するとtime機能し、コンパイラは無名関数の戻り値の型を正しく使用して「time」関数を型付けします。

素晴らしいように見えますが、このパターンには多くの欠点があります。

  • 各呼び出しで同じシンボルを再利用するようにユーザーに強制します
  • 事前定義されたプロジェクトレベルのタイマーなど、より高度なことを行うのが難しくなります
  • ライブラリが 'timerBigString のデータ構造を一度初期化することを許可しません

ここで mkTimer が登場します。これにより、時間関数を部分的に適用して再利用できるようになります。私は次のようにmkTimerを使用します:

しかし、コンパイル エラーが発生します。

カリー化をインライン化すると、同じエラーが発生します。

これは私がすればうまくいきますval timerBigString = time('timerBigString) (_: String)が、これは私が望むものではありません。部分的に適用された関数の入力を適用まで延期したいと思います。

私は、部分関数を最初に作成したときに、コンパイラが部分関数の戻り値の型を決定していると結論付けました。

だから私が探しているのは、部分的に適用された機能の一種の遅延バインディングだと思います。これを行う方法はありますか?それとも、私がたどることができるまったく別の道があるのでしょうか?

さて、ここまで読んでくれてありがとう

-テオ

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

scala - Scala が複数のパラメーター リストとリストごとの複数のパラメーターの両方を提供するのはなぜですか?

複数のパラメーター リスト (例: リストdef foo(a:Int)(b:Int) = {}ごとの複数のパラメーター) はdef foo(a:Int, b:Int) = {}、私が知る限り、意味的に同等であり、ほとんどの関数型言語には、複数のパラメーター (F# など) を宣言する方法が 1 つしかありません。

これら両方のスタイルの関数定義をサポートする唯一の理由は、パラメーターを 1 つしか持たないパラメーター リストを使用して、構文に似た言語拡張を許可するためです。

構文のように呼び出すことができるようになりました

ただし、複数のパラメーター リストを使用せずに中括弧の使用をサポートする方法は他にもあります。

関連する質問: Scala で複数のパラメーター リストを使用することを「カリー化」と呼ぶのはなぜですか? カリー化は通常、部分適用をサポートするために n 項関数を単項にする手法として定義されます。ただし、Scala では、関数の「カリー化された」(それぞれ 1 つのパラメーターを持つ複数のパラメーター リスト) バージョンを作成せずに、関数を部分的に適用できます。

0 投票する
4 に答える
1147 参照

c++ - qtスロットカリー化

カレーqtスロットの方法はありますか?たぶんカレーに似たものがありますか?

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

php - PHP 致命的なエラー: コンテキスト '' からの保護されたメソッド FormValidator::setError() への呼び出し

私の貧しいクラスを考えてみましょう:

次のように実装クラスで使用します。

その結果、次のエラーが発生します。

質問: クロージャにクラス コンテキストを「継承」させる方法はありますか?

0 投票する
10 に答える
4961 参照

haskell - カリー化された関数の実用化?

関数をカリー化する方法に関するチュートリアルは山ほどあり、stackoverflow には多くの質問があります。しかし、The Little Schemer、いくつかの本、チュートリアル、ブログ投稿、stackoverflow スレッドを読んだ後でも、「カリー化のポイントは何ですか?」という単純な質問に対する答えがわかりません。「なぜ?」ではなく、関数をカレー化する方法を理解しています。その後ろに。

カリー化された関数の実用的な使用法を誰かが私に説明してくれませんか (関数ごとに 1 つの引数のみを許可する言語の外では、カリー化を使用する必要性はもちろん明らかです)。

編集: TLSのいくつかの例を考慮に入れると、利点は何ですか

とは対照的に

より多くのコードしか表示されず、追加の柔軟性はありません...