問題タブ [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 投票する
3 に答える
235 参照

haskell - Haskell で (.) を使用する方法

私は Haskell で次のようなものを書こうとしています:

しかし、うまくいきません。

型に基づいて、私の理解ではintersect、 の型を返し、[a]に寄付しますnub。これは、 の型を正確に受け取り、to[a]の型も返します。最後に、戻り値は になります。どうしたの?[a]lengthInt

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

f# - (ケストレル) K-コンビネーター: なぜ役に立つのか?

私は最近 F# を取り上げており (私のバックグラウンドは C# です)、サイトhttp://fsharpforfunandprofit.comを読んでいます。

コンビネータのセクションであるhttp://fsharpforfunandprofit.com/posts/defining-functions/にアクセスしました。ケストレルを除いて、私はそれらすべてを理解しています(Yコンビネーターまたはセージバードは私の心を狂わせますが!)。Scott Wlaschin は (F# で) 次のように定義しています。

これが役立つ状況を一生理解することはできません。最初は、関数に値を渡してから元の値を取得できるように、チェーン演算子として使用できるのではないかと考えました。私は以前にそのような演算子を自分で書いたことがありますが、ご覧のとおり、同じではありません。

K コンビネータ (値 5) を部分的に適用すると、引数を無視して代わりに 5 を返す関数が返されます。これも役に立ちません。

これがどこで使用されるかの簡単な例を教えてください。

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

c++ - C ++でのより大きな値の数学的計算

これは t 個のテスト ケースを持つ非常に単純なプログラムであり、nCr=n!/r!*(nr)! を見つける必要があります。したがって、20C2 のような小さな値ではうまく機能しますが、100C10 のような大きな値では機能しません。32C2=-6 ,100C10 浮動小数点例外が発生します。1<=n<=r<=1000 にする方法 ?? 注: long double を要求していないか、float に変更したくありません。答えは 100C10 = 17310309456440 同様に 989C45=? のようになります。

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

c - 2 つの文字列を 1 つの文字列に結合して、C の同じ文字を削除する

こんにちは、私はプログラミングにとても慣れていないので、あなたからいくつか学びたいと思っています:) 最大サイズが 5 文字の 3 つ以上の入力を取得したい。(例: HELLO、HI、GOOD、BYE) そして、それらの 4 つの文字列から同じ文字を 1 回だけ保持する新しい文字列にそれらを積み重ねたい (例: H、E、L、L、O、I、G、D 、に)

どの方法でできるか教えていただければ幸いです。(私もこのサイトの初心者です。これを検索しましたが、見つかりませんでした。存在する場合は申し訳ありません。)

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

regex - 「updateDet」はキーワード「update」として認識されるべきではありません

このコードで

エラーが発生します

[1.1] 失敗: 文字列に一致する正規表現\z' expected butu' が見つかりました

updateDet,update

修正方法は?updateDet はキーワードとして認識すべきではない

スカラ 2.10.2

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

ruby - 再帰関数に対するタップの動作

メソッドの戻り値を美しくするために、時々タップを使用するのが好きです。ただし、再帰関数でタップを使用すると、動作が予想とは異なります。

戻り値

タップを使用するようにレンダリング関数を変更すると:

戻る

動作は最初のレンダリング関数と同じであると思います。ドキュメントは、「ブロックにxを生成し、xを返す」ことを示しています...関数が再帰的であるため、何らかの形で関数スタックを汚染していますか?

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

json - scala コンビネータを使用してケース クラスでオプションの json 値を読み取る方法

オプションで「情報」とその内容を含むことができる JSON を処理しようとしています。これは、次のケース クラスと、JSON をオブジェクトで読み取るためのコンビネータでキャプチャされます。しかし、コードはコンパイルに失敗します。これを処理するより良い方法はありますか?情報を空にすることができます。

コンパイル エラー:

スカラバージョン: 2.11.2

ありがとう、

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

json - ScalaJsonCombinator(書き込みを定義するとき)のこの「and」は何ですか?

私はこのjsonコンビネータをいくつかの基本的/標準的なケースで使用してきましたが、それがどのように機能するかを本当に理解していません。すべて問題ありませんでした。

今、私はどんな高度なケースが来ても準備を整えたいと思っています。コードを理解する必要があります。

参考:https ://www.playframework.com/documentation/2.3.x/ScalaJsonCombinators

私はReadsを理解できると思います:

次の読み取りを作成します。

  1. 最初に ("reads" メソッドを介して) JsValue が指定されると、"lat" が取得され、続いて "long" が取得されます。これら 2 つからタプル (Double、Double) を作成します。-- https://www.playframework.com/documentation/2.3.x/api/scala/index.html#play.api.libs.json.Reads

  2. そのタプルは、その Reads... の部分関数に割り当てられます。この場合は、「Location.apply _」によって返されるものです。私はreplでそれを試しました:

...

その部分関数は (Double, Double) のタプルを入力として受け取ります。したがって、ステップ 1 の結果はステップ 2 に送られ、"reads" の戻り値として Location のインスタンスが取得されます。

では、次のように書き込みます。

まず「申請を取り消す」。私はreplで試しました:

おっと、わかりました、私は指示に従いました:

では、Location のインスタンスを (オプションの) (Double, Double) のタプルに変換する部分関数を取得します。

次に、「アンリフト」:

わかりました... unlift は単純に「オプション」を破棄し、タプルに直接移動します。

わかりました...そう...私は推測します...これはWritesの「書き込み」です... *) Locationのインスタンスが与えられると、次のようになります:

  1. そのオブジェクトを unlift(Location.unapply) によって生成された部分関数に渡します。

  2. その部分関数によって返されたタプル (Double、Double) は、これによって生成されたものにチャネル化されます。

    (JsPath \ "lat").write[Double] および (JsPath \ "long").write[Double]

その「なんでも」って具体的に何?JsPath の API ドキュメントに従うと、OWrites だと思います: https://www.playframework.com/documentation/2.3.x/api/scala/index.html#play.api.libs.json.OWrites

しかし... OWrites に「and」という名前のメソッドがあることがわかりません。この「and」はどこで宣言されていますか?そして、それは何をしますか?「oWrites1 と oWrites2」は「oWrites3」を生成しますか? そして、この「oWrites3」は、タプルを入力として受け取る特別なタイプの OWrites ですか? ... その場合... タプルには、ケース クラス ("lat" と "long") のプロパティの名前に関する情報がありません。では、生成された json 文字列が {"lat": 1, "long": 2} であることをどのように知るのでしょうか?

質問の連続で申し訳ありません。これを明確に理解するのを手伝ってください。ありがとう!

*) https://www.playframework.com/documentation/2.3.x/api/scala/index.html#play.api.libs.json.Writes


更新: