問題タブ [combinators]

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 に答える
95 参照

scala - 「forever」コンビネータの StackOverflow

関数型プログラミングの Scalaforeverのコンビネータを見ると、次のようになります。

本で説明されているように、StackOverflow に遭遇しました。

次に、変数を追加し、アクセスされるcountたびにインクリメントします。t

次に、ScalaTest テストを作成しました。

上記のテストを 3 回実行した後、毎回 ~1129/1130 で失敗します。

なぜクラッシュする前にその数に達しているのでしょうか? また、各実行が占有するスタックメモリの量をどのように判断できますforeverか?

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

json - Play の (2.2) Scala JSON Combinators を使用して、ケース クラスにない任意の値を書き込む

Writesシリアル化されているクラスにない JSON オブジェクトを発行するを実装したいと思います。

ケースクラスの場合:

私は生産しようとしています:

単純な最初の試みは次のとおりです。

当然、後続のand呼び出しが を生成し、 が を生成するため、CanBuild3これはコンパイルされません。結果に値を追加して を生成することを検討しましたが、私が見つけたものはかなり悪く見え言語メンテナーはそれを実装しませんFoounapplyTuple2Tuple3

これを回避する方法はありますが、結果の JSON に追加したいこれらのデコレーター値でモデル クラスを汚染したくありません。

助言がありますか?

値が JSON に存在しないが、結果のオブジェクトによって指定されている場合に値を提供して、別の方向に進むことができることに注意してください。Reads.pure

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

haskell - Haskell の S コンビネータ

Sコンビネータのアナログは、標準関数のみを使用して (方程式で定義せずに)、ラムダ (無名関数) を使用せずに Haskell で表現できますか? のタイプであると期待してい(a -> b -> c) -> (a -> b) -> a -> cます。

たとえば、Kコンビネータの類似物はちょうどconstです。

実際、私は\f x -> f x x標準関数を使用して関数を表現しようとしていますが、最初から標準の非線形関数を考えることはできません(これは、その引数を複数回使用する関数です)。

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

haskell - 結果を複製しない HXT の論理 OR

HXTに少し問題があります: いくつかの基準に一致するドキュメント内のすべてのノードを見つけようとしています。レンズ/XPath を OR のような方法で述語として結合しようとしてControl.Arrow.<+>ます。ガイドが提案します。ただし、ドキュメントで矢印を「実行」しようとすると、結果が重複します。重複を削除したり、より意味のある方法でテストを組み合わせたりする簡単な方法はありますか? これが私のコードです:

しかし、これを (任意の Web ページで) 実行するたびに、結果/ノードが重複します。これはモノイドを模倣するArrowPlus typeclass<+>の一部であり、ArrowXMLはArrowListArrowTreeの両方のインスタンスであるため、多くの作業が必要です。ArrowIf述語を作成する必要がありますか? これに関するどんな助けも素晴らしいでしょう:)

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

scala - コンビネーターと組み合わせることができる検証の最大数はありますか?

検証に Scalaz (scala 2.10、バージョン 7.1 の ScalaZ) を使用しようとしています。13 個のフィールドを持つケース クラスがあるため、最終的に 13 個の検証が行われます。コンビネータを使用してすべての検証を結合し、すべてが成功した場合にクラスを構築しています。コンビネータが 12 個しかない場合は、すべて問題ありません。13番目を追加すると、「値 |@| は scalaz.syntax.ApplicativeBuilder のメンバーではありません」というメッセージが表示されます。

再現するために、REPL を起動し、12 のアイテムを結合しようとしました。

うまく動作します。次に、13 のアイテムを組み合わせようとしました。

すべての検証を組み合わせる別の方法はありますか?

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

haskell - ポイントフリー版はコンパイルされませんが、ポイントフル版はコンパイルされますか?

それ自体に count 回追加されたリストを返す Haskell 関数を作成したいと思います ( lst * countPython のように)。

私の最初の試みは:

私の推論はreplicate、カウントと値を受け入れ、値のリストを生成するというものです。値自体がリストの場合は、リストを連結するだけです。ただし、これにより当惑するエラーが発生します。

それから私は意味のあるバージョンを書きました:

そしてそれは動作します!

ポイントのないバージョンがコンパイルに失敗するのに、ポイントを追加すると機能するのはなぜですか?