問題タブ [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.
haskell - Haskellマップ/zip対 リスト内包
次のうち、あなたが書く可能性が最も高いのはどれですか?
また
インターネット上のサンプルコードは、前者がより豊富で好ましい方法であることを示しているようです。
binding - Clojureでlazy-seq生成の匿名再帰関数を作成するには?
編集:これを書いている過程で自分の質問に対する部分的な答えを発見しましたが、簡単に改善できると思うので、とにかく投稿します。多分そこにもっと良い解決策がありますか?
letに頼らずにフォームで再帰関数を定義する簡単な方法を探していますletfn。letこれはおそらく不合理な要求ですが、私がこの手法を探している理由は、多くのネストされたandletfnステートメントを必要とする方法で相互に依存するデータと再帰関数が混在しているためです。
次のような遅延シーケンスを生成する再帰関数を書きたいと思いました (例としてフィボナッチ数列を使用)。
fibsしかし、バインド中に独自のシンボルを使用できないのは clojure のようです。それを回避する明白な方法はletfn
しかし、前に述べたように、これは多くの厄介なネストと交互のletandにつながりletfnます。
letfnだけを使用せずにこれを行うためにlet、U-combinator と思われるものを使用するものを作成することから始めました (今日その概念について聞いたばかりです)。
しかし、どのように冗長性を取り除くの(fi fi)ですか?
この時点で、コンビネータ Q に 1 時間も苦労して少しずつビットを追加した後、自分の質問に対する答えを発見しました。
Q再帰シーケンスを定義するために使用しているこのコンビネータは何と呼ばれていますか? 引数のない Y コンビネータのように見えますx。それは同じですか?
YまたはQの機能を提供するclojure.coreまたはclojure.contribの別の機能はありますか? 私がしたことが慣用的だったとは想像できません...
optimization - foldl は末尾再帰です。
私はfoldlとfoldrをテストしたかった。私が見てきたことから、末尾再帰の最適化のために、可能な限りfoldrよりもfoldlを使用する必要があります。
意味あり。ただし、このテストを実行した後、私は混乱しています:
folderr (time コマンドを使用する場合は 0.057 秒かかります):
foldl (time コマンドを使用すると 0.089 秒かかります):
この例が些細なことであることは明らかですが、foldr が foldl を上回っている理由については混乱しています。これは、foldl が勝つ明確なケースではないでしょうか?
haskell - Haskellで反復をどのように(再)実装しますか?
(おそらくご存じのとおり)iterateは、関数と開始値を取る関数です。次に、関数を開始値に適用し、同じ関数を最後の結果に適用する、というように続きます。
結果は無限リストです。(それが私が使用する理由ですtake)。私の質問ですが、基本 (ラムダ、パターン マッチング、ガードなど)iterate'のみを使用して、Haskell で独自の関数をどのように実装しますか?(:) (++)
(Haskell初心者はこちら)
list - リストから重複を削除
私はデータ型を持っています:
SidesType のリストを取得し、そこから重複を削除する関数が必要です。
これが私の解決策です:
このコードをより haskell-way で記述する他の方法があるかどうか疑問に思っています。
parsing - Scala Parser Combinators で書かれたパーサーから意味のあるエラー メッセージを返す
Parser Combinators を使用して scala でパーサーを作成しようとしています。再帰的に一致する場合、
そうすれば、ステートメントに誤りがあるたびに、適切なエラーメッセージが表示されます。ただし、これは醜い長いコードです。だから私はこれを書きたい:
このコードは機能しますが、FIRST ステートメントにエラーがある場合にのみ意味のあるメッセージを出力します。それが後のステートメントにある場合、パーサーは誤ったステートメント全体が「終了」トークンに置き換えられることを確認したいため、メッセージは非常に使用できなくなります。
私の質問: repとrepsepを意味のあるエラー メッセージと組み合わせて動作させ、繰り返しフラグメントの先頭ではなく適切な場所にキャレットを配置する方法はありますか?
parsing - スカラパーサーコンビネータでバックトラッキング?
scala のパーサー コンビネータはバックトラックしないようです。次の「stmt」を正しく解析できない文法(下を参照)があります。
これは、バックトラッキングで簡単に解析できるはずです:
または私は何かを逃していますか?
パーサー:
lisp - 定義を使用したスキームの Y コンビネータ
固定小数点コンビネータが何であり、何に使用されるかを学ぶために、私は自分自身を書きました。しかし、ウィキペディアの例のように、厳密に匿名の関数で記述する代わりに、define を使用しました。
階乗とフィボナッチの汎関数でこれをテストしましたが、うまくいくようです。これは、固定小数点コンビネータの正式な定義を満たしていますか?
c# - Observable のいずれかが完了したときに結果が完了するように、2 つの Observable をマージする方法は?
私はこのコードを持っています:
OnError(new OperationCanceledException()) を使用して問題を解決しましたが、より良い解決策が必要です (コンビネーターが必要ですか?)。