問題タブ [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.
syntax - F#ステートメントのセマンティクス
誰かがこのF#式を私に説明できますか?
val
キーワードはどういう意味ですか?
通常type -> type
、指定された型を返す関数を示しているというのは本当ですか?ではtype -> type -> type
、指定された型を返す関数を返す関数を示しているのでしょうか。
haskell - Haskellのカリー化とポイントフリースタイルについての混乱
関数を実装しようとしていました
これがこの質問のトピックでした。明示的な再帰なしでこれを実行しようとしました。私は次のコードを思いついた
私の関数は怠惰ではなかったので機能しませんでした(これは質問で必要でした)ので、そこには賛成票はありません:-)。
しかし、私はそこで止まりませんでした。関数をポイントフリーにして、短くする(そしておそらくもっと涼しくする)ようにしました。引数f
とxs
は式の最後のものなので、私はそれらを削除しました:
しかし、これは期待どおりに機能しませんでした。実際、まったく機能しませんでした。
何故ですか?基本的にカリー化の目的である、末尾の関数の引数を単純に削除できるという印象を受けました。
visual-studio-2010 - F#: カリー化されたオーバーロード/タプル化されたオーバーロードの問題
一部のコードを VS2010 b1 に含まれる F# の最新バージョンに移行しているときに問題が発生しました。利用可能な回避策があるかどうかを知りたいのですが、利用できない場合は、F# コンパイラの動作が変更されなかった理由を知りたいです。シナリオをサポートします。
このコードは、次のコンパイル時エラーを生成します。
エラー FS0191: このメソッドの 1 つ以上のオーバーロードにカリー化された引数があります。タプル形式で引数を取るようにこれらのメンバーを再設計することを検討してください
これは F# 1.9.6.2 (9 月 CTP) で問題なく動作していたことに注意してください。
c - Cでカリー化する方法はありますか?
function へのポインタがあるとします_stack_push(stack* stk, void* el)
。curry(_stack_push, my_stack)
を受け取るだけの関数を呼び出して取得できるようにしたいvoid* el
。C ではランタイム関数の定義が許可されていないため、それを行う方法は思いつきませんでしたが、ここには私よりもはるかに賢い人がいることは知っています :)。何か案は?
ocaml - 純粋関数型 ML で N 次元ウォークを実行しますか?
アイデアは、それぞれが範囲として定義された複数の次元を歩くことです
そのため、四角形 X Y または立方体 X Y*Zのような関数を適用したり、それらに適用しfun foo y x
たりできます。fun foo z y x
SML/NJ は以下の私の実装を好まない:
コードは次のとおりです。
この種の構成は可能ですか?
どんなポインタも歓迎します。
ruby - ルビーにカレー(部分関数)を実装する方法
rubyでカレー関数を実装する例がいくつか必要です(1.9ではなく1.8.6または1.8.7)。
c# - .NETのインスタンスメソッドを「Uncurrying」
作成時にインスタンスを指定せずに、インスタンスメソッドのデリゲートを作成できますか?つまり、メソッドが呼び出されるインスタンスを最初のパラメーターとして受け取る「静的」デリゲートを作成できますか?
たとえば、リフレクションを使用して次のデリゲートを作成するにはどうすればよいですか?
methodInfo.Invokeを使用できることは知っていますが、これは遅く、呼び出されるまで型の正しさをチェックしません。
MethodInfo
特定の静的メソッドのを持っている場合、を使用してデリゲートを構築することが可能Delegate.CreateDelegate(delegateType, methodInfo)
であり、静的メソッドのすべてのパラメーターはフリーのままです。
Jon Skeetが指摘したように、メソッドが参照型で非仮想である場合は、同じものを適用してインスタンスメソッドのオープンデリゲートを作成できます。仮想メソッドで呼び出すメソッドを決定するのは難しいので、それほど簡単ではなく、値型はまったく機能しないように見えます。
値型の場合、CreateDelegate
非常に奇妙な動作を示します。
インスタンスメソッドが値型に属している場合、ターゲットオブジェクトとしてCreateDelegate
withを呼び出すと、バインディング例外がスローされます(これは参照型で機能します)。null
数年後のフォローアップ:私の例ではなく、誤ってバインドされたターゲットがfunc42(CultureInfo.InvariantCulture);
戻ってきたのは、リモートでコードが実行される可能性のあるメモリの破損でした(cve-2010-1898)。これは、2010年にms10-060セキュリティアップデートで修正されました。現在のフレームワークは42を正しく印刷します!それはこの質問に答えるのを簡単にすることはありませんが、例の特に奇妙な振る舞いを説明しています。"-201040128"
"42"
functional-programming - 関数型プログラミングでは、「カリー化」とは何ですか?
再構築されていない命令型およびOOプログラマーとしての記述...
最近、ErlangとHaskellをいじりました。私はErlangが好きですが、Haskellについてはまだわかりません。機能はプログラミングというより数学のように思えます。それが理にかなっていることを願っています。関数型プログラミングは非常に強力なようです。
関数型プログラミングのインターウィブルに関するドキュメントを読んでいると、「カリー化」という言葉に常に出くわします。頭上にあるドキュメントだけを見つけているようです。定義されていない多くの用語があります。
カリー化とは?
すでに投稿されている同様の質問を探しましたが、何も見つかりませんでした。確立されたスレッドを自由に紹介してください。
grails - Curry を使用して Grails タグを定義する
grails タグ ライブラリ TpTagLib があり、その中で 1 つの定数値だけが異なる 4 つの新しいタグを定義したいので、カレーを使用しようとしました。ただし、例外があります: groovy.lang.MissingPropertyException: No such property: attr for class: TpTagLib
なぜこの例外が発生するのか、誰にも分かりますか? コードは次のとおりです。
operators - SML / NJで二項演算子のカレー形式を取得する方法はありますか?
たとえば、代わりに
私はむしろ持っていたい
で使用するため
明らかに、私は自分でこれを行うことができます、例えば、
しかし、私はもっとエレガントな方法を見逃していないことを確認したいと思います。