問題タブ [function-composition]

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 投票する
1 に答える
553 参照

haskell - haskell で関数を作成するときに、なぜブラケットを使用する必要があるのですか?

次の関数を定義する必要があるとしましょう。

アイデンティティ = chr.ord

しかし、上記の行は機能しません。正しい方法は次のとおりです。

アイデンティティ = (chr.ord)

通常、Haskell は非常に最小限の言語であるため、余分な括弧を使用することは (私には) 自然に思えません。

ブラケットを導入する必要性を認識している人はいますか。Haskell でドット演算子を使用する他の場所を思い出せません (10 進数以外)。

Nate/Daniel からのコメント後の編集

どちらも正しいです。私の実際の方法は次のとおりです。

この場合、ord a を評価してから chr.97 を評価しようとするため、エラーが発生します。

ありがとう。

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

haskell - Haskell:関数合成でのマップの使用

私はHaskellに比較的慣れていないので、私の質問がばかげているように聞こえたらお詫びします。私は関数の合成がどのように機能するかを理解しようとしてきましたが、誰かが私を助けてくれるのではないかと思っていた問題に遭遇しました。次の2つのシナリオで、関数合成でマップを使用しています。

  • map (*2) . filter even [1,2,3,4]
  • map (*2) . zipWith max [1,2] [4,5]

filter関数とzipWith関数の両方がリストを返しますが、最初のコンポジションのみが機能し、2番目のコンポジションは以下のエラーをスローします。

任意の提案をいただければ幸いです。

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

lambda - 魔法の森でKコンビネータを作成するにはどうすればよいですか?(モッキンバードを嘲笑する)

Kコンビネータは定数関数であることを思い出してください。常に最初の引数を返します。

「モッキンバードをモックする」という本の中で、著者は話す鳥を含む魔法の森の例を示しています。鳥には行動があります:

鳥AとBがあれば、BからAの名前を呼び出すと、Aはあなたに鳥の名前を呼び出すことで応答します。この鳥はABによって指定されます。

森がA、B、Cの3羽の鳥で構成されているとします。少なくとも1羽の鳥がKコンビネータのように振る舞うことは可能ですか?

以下は、魔法の森の鳥の可能な行動のセットを示す表です。最初の列には、森の中の各鳥の名前があります。一番上の行には、各鳥に呼び出される可能性のある名前があります。体は名前に対する鳥の反応です。たとえば、鳥AにAの名前を呼び出すと、鳥AはCで応答します(行2、列2を参照)。簡潔に言えば、AA =Cです。鳥AにBの名前を呼び出すと、鳥AはBで応答します(行2、列3を参照)。簡潔に言えば、AB = Bです。ACの空のスロットにはどのような値を入れる必要がありますか?

鳥AをKコンビネータのように動作させることができるかどうかを見てみましょう。上記の値のセットは有望に見えます:

  • すべてのyについてAA=CおよびCy=A。つまり、すべてのyに対して(AA)y=Aです。

  • すべてのyについてAB=BおよびBy=B。つまり、すべてのyに対して(AB)y=Bです。

空のスロット(AC)にはどのような値を配置する必要がありますか?すべての場合を考慮してください:

  • AC = Aの場合、Ayの値はすべてのyに対してCでなければなりませんが、これは明らかに誤りです。したがって、Aを空のスロットの正しい値にすることはできません。

  • AC = Bの場合、Byの値はすべてのyに対してCでなければならず、これは明らかに誤りです。したがって、Bを空のスロットの正しい値にすることはできません。

  • AC = Cの場合、Cyの値はすべてのyに対してCでなければなりませんが、これは明らかに誤りです。したがって、Cを空のスロットの正しい値にすることはできません。

したがって、すべてのyについて、条件(AC)y=Cを満たすために空のスロットに値を配置することはできません。

私の知る限り、鳥をKコンビネータのように振る舞わせることは不可能です。あなたが私を間違っていると証明してくれることを願っています。

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

list - 関数合成による効率的なリストの追加/前置

数か月前、O(1) の他のリストにリストを追加および追加するための効率的なアプローチをどこかで読みました。これは、評価されると結果のリストを O(n) に組み込む関数構成でそれらを表します。

残念ながら、この記事のソースや (存在する場合) この手法/アプローチの名前を思い出すことができません。それについての参考文献はありますか?

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

haskell - 関数合成のヒント

次の構成がどのように機能するかについての説明を探しているだけです。

どこ

最終的なタイプ:

ma(a-> mb)とどのように一致させることができるか理解できません。関数型を期待する(= <<)の最初の引数に単純型であるreturnの結果をどのように適用できますか?

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

.net - How to cleanly hand parameters from function to function (like composition)

I don't know all the different operators and techniques in F#, but was hoping I could just plop some operator in place of "x y" for func1 and func2 to indicate to them "Just take my parameters" almost like how composition has implicit parameter pass through.

Alternatively, if someone can think of a much more straightforward and clean way of doing this that gets rid of the need for my function to hand it's parameters in, let me know.

Also, if this is just not possible which seems entirely likely, let me know.

Thanks!

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

haskell - 複数の変数を使用した無意味な構成

私はそれに頭を包み始めました。むしろ、1つの出力から1つの入力に値を本質的にパイプできる単純な状況で使用するのが好きです。私が満足している無意味な構成の簡単な例は次のとおりです。

今日 GHCI で遊んでいるときに、 を構成not(==)て複製できるかどうかを確認したかったの(/=)ですが、実際にはそれを推論できませんでした。(==)2 つの入力をnot取り、1 つを取ります。私はこれがうまくいくかもしれないと思った:

Boolの単一の出力が(==)に移動すると仮定するとnot、次のエラーを引用してコンパイルされません。

それが私にとって大きな意味があると言えたらいいのにと思いますが、私が得ているのは、渡された2番目の引数(==)not? この構成の背後にあるロジックをもう少しよく理解するのを手伝ってくれる人はいますか?

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

c++ - ブースト機能構成

function が必要だとします。それを a で構成して別のwhereを生成double adapter(double)する一般的な方法はありますか? 特に、C++11 を使用せずにこれを行う方法があれば素晴らしいと思います。boost::function<double(...)> functorboost::function<double(...)> functor2functor2(...) == adapter(functor(...))

editboost::function<double(...)>明確にするために、任意の を処理できるもの、つまり、1、2、3 などの引数を何度もコピーして貼り付けることなく異なる長さの署名を持つものを書く方法があるかどうかを知りたいと思っています。

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

haskell - haskellの高階関数を見つける

リストをそれ自体に圧縮する関数は、次のように定義できます。

これは機能しますが、ポイントフリースタイルで定義したいと思います。これを行うために、私は関数を定義しますdollarize

これは機能しますが、明らかに私は自分自身の高階関数を定義したくありません。dollarizeそれが存在すると仮定して、の標準的な同等物を見つける方法はありますか?そうでない場合、機能を組み合わせるために存在するこの種の機能はどこにありますか?

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

haskell - Haskell : 関数内のドット

この関数で「。」が使用されている理由を教えてください。?