問題タブ [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.
javascript - JavaScript reduce は数学関数を処理できませんか?
私は明らかな仕事をしようとしています:
そして得る:
結果として。それを機能させるには、次のように無名関数を作成する必要があります。
誰かが理由を教えてもらえますか? どちらも 2 つの引数を取り、1 つの値を返す関数です。違いは何ですか?
別の例は次のとおりです。
結果は次のとおりです。
この例は、この形状の下でのみ node.js で実行できます (配列には、現在使用している node.js v4.12 に連結がありません)。
そして、これを取得します:
なんで?
haskell - map、concat を使用して 3 つのパラメーターのリスト内包表記を置き換える
リスト内包表記についてはある程度理解しています。私は次の表現を理解しています:
そして、その式の効果は次と同じです。
ここで、次の関数の他の方法 (上記と同様) を見つける必要があります。
エラーなしで自分で理解することはできません、助けてください
string - 「Map」高階 Haskell 関数
たとえば、次のようなリストがあります。
map
リストで使用したい。
私はmap
以前に正常に使用しました:
それで:
リストを作成します:
しかし、関数でリスト項目を使用するにはどうすればよいf
ですか?
たとえば、リスト要素を繰り返したい場合は、
になるだろう
map
関数f
(および)を使用してそれを行うにはどうすればよい++
ですか?
collections - コレクションの高階関数は順番に実行されることが保証されていますか?
別の質問では、ユーザーは次のようなコードを書くことを提案しました。
このようなコードは、他の言語では、collectのコンテンツがそのコンテキストの状態を変更するため(ここではの値を変更するため)、悪い習慣と見なされますi
。言い換えれば、閉鎖には副作用があります。
このような高階関数は、クロージャを並行して実行し、新しいリストに再度アセンブルできる必要があります。クロージャでの処理が長く、CPUを集中的に使用する操作である場合は、それらを別々のスレッドで実行する価値があるかもしれません。collect
それを達成するためにを使用するように変更するのは簡単ExecutorCompletionService
ですが、それは上記のコードを壊します。
問題の別の例は、何らかの理由collect
で、たとえば逆の順序でコレクションを参照する場合です。この場合、結果はになります[3, 2, 1, 0]
。この場合、リストは元に戻されていないことに注意してください。0は、実際には「d」にクロージャを適用した結果です。
興味深いことに、これらの関数は、コレクションのJavaDocの「このコレクションを反復処理する」で文書化されています。これは、反復がシーケンシャルであることを示しています。
groovy仕様は、またはのような高階関数で実行の順序を明示的に定義していますcollect
かeach
?上記のコードは壊れていますか、それとも大丈夫ですか?
f# - F# で不確定な数のパラメーターを持つ関数をラップする
文字列を返す関数を取り、同じパラメーターを取り、「ラップされた」入力から文字列を返す関数を返す単純なラッパー クラスを F# で記述しようとしています。
次のコードは、単一の変数を取る関数に対して機能します (したがって、正常に機能しますtest
)。
ただしfun x ->
、単一のパラメーターを指定するため、test2
有効なコードではありません。この構造を可能にする構文はありますか?
sml - ML の高次関数のカリーとアンカリーとは
Compose 関数は理解できますが、ML のカリーとアンカリーがよくわかりません。誰でもこれらを説明できますか?
また、次の2行はどういう意味ですか?
php - PHP で関数型プログラミングに array_filter() を使用するにはどうすればよいですか?
タグの配列があるとします
そして、$_GET 変数を使用して一連の URL を作成したいと考えています。
リンクを次のようにしたいと思います:
'A'
リンク先への"index.php?x[]=B&x[]=C"
'B'
リンク先"index.php?x[]=A&x[]=C"
など ($_GET は、「現在の」要素を除くすべての要素を含む配列です) (これを実装する簡単な方法があることは知っています: 実際には、より複雑なものを単純化しています)状況)
array_filter()
これを使って解決したいと思います。
これが私の試みです:
しかし、うまくいきません。PHPのマップとフィルターが実際にデータ構造自体を変更し、機能的なスタイルを使用する代わりにブール値を返す方法に関係している可能性があるのではないかと疑っています。
このコードをより簡潔にする他の方法にも興味があります。
haskell - 関数の結合性、交換性などを自動的かつ決定論的にテストする
isAssociative
2 つの引数を持つ別の関数を取り、その関数が連想的かどうかを判断する高階関数を構築することは可能ですか?
同様の質問ですが、交換性などの他のプロパティについても同様です。
これが不可能な場合、任意の言語で自動化する方法はありますか? Agda、Coq、または Prolog ソリューションがあれば、興味があります。
考えられるすべての引数の組み合わせをチェックし、決して終了しないブルート フォース ソリューションを思い描くことができます。しかし、「決して終了しない」は、このコンテキストでは望ましくないプロパティです。
scala - リストを要素のマップに変換 - > scalaのリスト(要素)
ドキュメントのリストがあり、ドキュメントにはユーザーである所有者がいます。
このリストをユーザーのマップからユーザーが所有するドキュメントのリストに変換する最もエレガントな方法は何ですか?
たとえば、私は持っています:
最終的に次のマップになるはずです。
ドキュメントからすべての一意のユーザーを取得し、それぞれのドキュメント リストをフィルタリングして、所有するものだけにする方法を考えることはできますが、固定数のパスを使用する方法があるかどうか疑問に思っていますリストが大きい場合のパフォーマンスの問題を防ぐために、リスト全体を調べます。