問題タブ [higher-order-functions]
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.
haskell - Haskellでラムダフォームが必要なのはいつですか?
私は Haskell の初心者であり、関数型プログラミングの比較的初心者です。他の (Haskell 以外の) 言語では、ラムダ形式が非常に便利なことがよくあります。
たとえば、スキームでは次のようになります。
(関数 f 上で) クロージャを作成して、導関数 (値 x、間隔 h) を近似します。ただし、ラムダ形式のこの使用法は、部分的な適用のため、Haskell では必要ないようです。
Haskellでラムダ形式が必要な例は何ですか?
編集:「クロージャー」を「ラムダ形式」に置き換えました
function - 一部のプログラミング言語は、関数と関数ポインターをどのように区別しますか?
私は主に関数型プログラミング言語について話している。たとえば、地図に関するウィキペディアの記事には、Haskell風の言語でこの例があります。
map square [1,2,3,4,5]
square
パーサー/コンパイラーは、関数自体を呼び出そうとせずに、関数をmap
高階関数として渡したいことをどのように認識しますか?静的型付けを使用する言語の場合、式square [1,2,3,4,5]
は明らかにコンパイルされませんが、コンパイラーは実際にそれを使用して、それが私が意図したものではないと判断しますか?
または、これはウィキペディアの悪い例であり、より良い例はmap &square [1,2,3,4,5]
(Cスタイルの関数参照を使用して)次のようになりますか?
ruby - Rubyのメソッドにブロックを渡す
生成された(高階関数)をメソッドからrubyメソッドに渡したいのですが。このようなもの
エラーが発生します
どうすればこのようなことを達成できますか?
python - 関数をn回繰り返す方法
私はPythonで次のような関数を書き込もうとしています:
ここf
で、は1つの引数を取りn
、正の整数である関数です。
たとえば、正方形を次のように定義した場合:
そして私は電話しました
これは3、2回二乗します。
python - シーケンス内の用語を追加/乗算するための一般的な関数を作成しようとしています
Pythonで4つの引数を持つ関数を書こうとしています
ここで、operation は関数、start はシーケンスの開始番号、n はシーケンスの最後の番号、term はシーケンス内の項を操作する関数です。
例えば
2、3、4、...、10 の 2 乗の合計を返します
とすれば:
python - Pythonのシーケンスの最初のn項の積
1 つの引数 (数値) を取り、その数値の階乗を返す関数を作成しようとしています。
たとえば、f(5) は 1*2*3*4*5 を返します。
私がこれまでに持っているのは
しかし、項が引数を1つだけ取るようにすることは可能ですか?
recursion - fold_left/rightを使用してOCamlのリストを反転する
更新-解決策
彼の助けをくれたjacobmのおかげで、私は解決策を思いついた。
私はOCaml(クラス用)での再帰のさまざまな方法について学び、いくつかの演習では、さまざまな再帰スタイルを使用してリストを逆にする関数を書いています。
今、私はを使って逆関数を書き込もうとしていますList.fold_left
が、行き詰まっていて理解できません。折りたたみを使用してこの逆関数をどのように記述しますか?
また、関数型プログラミング、さまざまなタイプの再帰、高階関数などについての参考資料があれば、リンクをいただければ幸いです:)
function - 結果が安定するまで関数を繰り返し適用する
simplify'
結果が「安定」するまで関数を繰り返し適用したい(つまりsimplify'(x) == x
):
これは私にとって一般的な問題のようです。よりエレガントなソリューションはありますか?
更新: はるかに簡単な解決策を見つけましたが、より洗練された解決策を探しています :)
scala - 関数が期待される場所でコンストラクターを使用する
Int
引数として2つの単純なクラスを持つ:
私は言うことができます:
これは正常に機能し、もう少し冗長に相当します。
ただしBar
、(ケースクラスではないため?)同じ構成で使用することはできません。
コンストラクターを参照し、eta拡張を利用するための特別な構文はありますか?List(1,2,3) map {new Bar(_)}
に比べて少し冗長に見えFoo
ます。
scala - ScalaでのfoldLeftとreduceLeftの違い
との基本的な違いを学びましfoldLeft
たreduceLeft
foldLeft:
- 初期値を渡す必要があります
reduceLeft:
- コレクションの最初の要素を初期値として取ります
- コレクションが空の場合は例外をスローします
他に違いはありますか?
同様の機能を持つ2つのメソッドがある特定の理由はありますか?