問題タブ [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 に答える
1137 参照

haskell - 継続渡しスタイル - 関数合成

私は Racket で CPS について学んでおり、これらの関数を書き上げることができました。

それらは正しく動作しているようです

これらの関数がまだ「真の CPS」であるかどうか疑問に思っています。これらの関数で「真の」継続渡しを台無しにしましたか? CPS で関数構成手法を使用することはコーシャですか? 奨励されていますか?それとも、これを行うことは「妥協」と見なされますか? それを行うためのよりCPS-yの方法はありますか?

はい、5 つの質問をしたことはわかっていますが、それらすべての背後にある基本的な考え方 (正しく理解しているかどうかはわかりません) は同じです。他の Lisp、Haskell、Erlang、または他の関数型言語での説明は問題ありません。

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

f# - 何が欠けていますか: 複数の引数を持つ関数合成は可能ですか?

ここで説明されているように、F# での関数合成の基本を理解しています。

たぶん、私は何かを見逃しています。>>and<<演算子は、各関数が 1 つの引数しかとらないという前提で定義されているようです。

ただし、私がやりたいことは、次のようなものです。

しかし、addの出力がdoubleの入力に必要なタイプであっても、それは拒否されます。

add を 1 つのタプル引数で書き直すことができることはわかっています。

または、最初の関数に可能な引数の数ごとに新しい演算子を書くことができます。

しかし、それはばかげているようです!私が見逃したより良い方法はありますか?

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

list - Haskellの紛らわしい関数適用と関数合成

操作

エラーが発生します。このフィルターをそのリストに適切に適用するにはどうすればよいですか?

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

haskell - Haskell で長い一連のコンポジションを表現する

(重要でない背景情報 / 動機)

私は、イェソドの本の使用を思いとどまらせnubたことに触発されて、別のバージョンの を実装していました。

map head . group . sortへの呼び出しよりも効率的ですnub。ただし、私たちの場合、順序は重要です...

そこで、順序が重要でないバージョンに似た「より良い」ナブを書き始めました。そして、私はこれで終わった:

これは確かに多くの余分な作業を行いますが、元の nub の O(n 2 )ではなく O(n log n) にする必要があります。しかし、それは論外です。問題は、それがとても長いことです!それほど複雑ではありませんが、長いです (私は 80 列よりも幅が広い、または StackOverflow コード ブロックの水平スクロールバーが嫌いな人の 1 人です)。

(質問)

このような関数構成の長いチェーンを表現するためのHaskellでのより良い方法は何ですか?

0 投票する
6 に答える
12141 参照

haskell - タイプ(c→d)→(a→b→c)→(a→b→d)のHaskell関数合成演算子

通常の関数合成は次のタイプです

これは次のようなタイプに一般化する必要があると思います。

具体的な例:二乗の差の計算。書くことはできますがdiffsq a b = (a - b) ^ 2、を作曲して、のようなものを書くことができるはずだと思います。(-)(^2)diffsq = (^2) . (-)

もちろんできません。私にできることの1つは、に2つの引数の代わりにタプルを使用して、(-)それをで変換することuncurryですが、これは同じではありません。

私がやりたいことをすることは可能ですか?そうでない場合、それが可能であると私に思わせる私は何を誤解していますか?


注:これは事実上ここですでに尋ねられていますが、答え(私は存在しているに違いないと思います)は与えられていません。

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

list - 2 つのリスト関数を 1 つに結合しますか?

次の 2 つの機能をどのように組み合わせますか。

単一の機能に?

出来ますか?

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

haskell - タプル引数を使用した Haskell での関数合成

時々、次の形式の関数が 2 つあります。

そして、コンポジションgが必要です。h を h' に変更することでこれを解決します。

次のような関数 m を (可能であれば) 示してください。

または、そのような状況に対処する別の方法。ありがとう。

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

haskell - 二項演算子による構成?

かなり簡単なことをしたいです。Data.Map insertWithで演算子(++)を使用していますが、正常に機能しますが、作成された値の重複を排除したいので、nubで構成します。

(nub(++))、(nub $(++))、(nub。(++))を試しましたが、(++)のタイプが予想されるnubのタイプと一致しないため、まったく役に立ちませんでした。 ([a])。

もちろん補助関数やラムダを定義することもできますが、もっと明確な構成があるのではないかと思います。

ヒントをお願いします!

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

python - Python 関数合成 (最大再帰深度エラー、スコープ?)

この関数の何が問題になっていますか? スコープ エラーのようです (ただし、直接使用するのではなく、各 callable をリストに配置することで修正したと思います)。エラーは最大再帰深度に達しました (comp(inv,dbl,inc) の呼び出し時)...

注:問題は、なぜ最大深度に達しているのかではなく、なぜ再帰しているのかということです...

トレースバック (役立つ場合):

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

haskell - Haskell での関数合成に関する混乱

ghci の次の関数定義を検討してください。

どこ、 。2 つの関数の合成 (右結合) を表します。これは私が呼び出すことができます

そして、それは私に望ましい結果をもたらします。どうやら、リスト [3.14, 3.14] を関数「sum」に渡し、その「結果」を cos などに渡します。ただし、これをインタープリターで行うと

また

それから私はトラブルに遭遇します。これを次のように変更すると、望ましい結果が得られます。

また

(.) の型は、'sum y' も関数であるため、次の形式に問題がないことを示唆しています (そうではありませんか? 結局、Haskell ではすべてが関数なのでしょうか?)。

さらに興味深いのは、2 つ (または多数) の引数 (リスト [3.14, 3.14] を 2 つの引数 x と y として渡すことを考えてください) で動作させることができることです。次のように記述する必要があります。

HaskellWiki には、「PointFree」フォームhttp://www.haskell.org/haskellwiki/Pointfreeと呼ばれるこのフォームに関するいくつかの議論があります。この記事を読んで、この形式は 2 つのラムダ式の合成とは異なるのではないかと疑っています。これらのスタイルの両方を区切る線を引こうとすると、混乱してしまいます。