問題タブ [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 で (.) を使用する方法
私は Haskell で次のようなものを書こうとしています:
しかし、うまくいきません。
型に基づいて、私の理解ではintersect
、 の型を返し、[a]
に寄付しますnub
。これは、 の型を正確に受け取り、to[a]
の型も返します。最後に、戻り値は になります。どうしたの?[a]
length
Int
f# - (ケストレル) K-コンビネーター: なぜ役に立つのか?
私は最近 F# を取り上げており (私のバックグラウンドは C# です)、サイトhttp://fsharpforfunandprofit.comを読んでいます。
コンビネータのセクションであるhttp://fsharpforfunandprofit.com/posts/defining-functions/にアクセスしました。ケストレルを除いて、私はそれらすべてを理解しています(Yコンビネーターまたはセージバードは私の心を狂わせますが!)。Scott Wlaschin は (F# で) 次のように定義しています。
これが役立つ状況を一生理解することはできません。最初は、関数に値を渡してから元の値を取得できるように、チェーン演算子として使用できるのではないかと考えました。私は以前にそのような演算子を自分で書いたことがありますが、ご覧のとおり、同じではありません。
K コンビネータ (値 5) を部分的に適用すると、引数を無視して代わりに 5 を返す関数が返されます。これも役に立ちません。
これがどこで使用されるかの簡単な例を教えてください。
c++ - C ++でのより大きな値の数学的計算
これは t 個のテスト ケースを持つ非常に単純なプログラムであり、nCr=n!/r!*(nr)! を見つける必要があります。したがって、20C2 のような小さな値ではうまく機能しますが、100C10 のような大きな値では機能しません。32C2=-6 ,100C10 浮動小数点例外が発生します。1<=n<=r<=1000 にする方法 ?? 注: long double を要求していないか、float に変更したくありません。答えは 100C10 = 17310309456440 同様に 989C45=? のようになります。
c - 2 つの文字列を 1 つの文字列に結合して、C の同じ文字を削除する
こんにちは、私はプログラミングにとても慣れていないので、あなたからいくつか学びたいと思っています:) 最大サイズが 5 文字の 3 つ以上の入力を取得したい。(例: HELLO、HI、GOOD、BYE) そして、それらの 4 つの文字列から同じ文字を 1 回だけ保持する新しい文字列にそれらを積み重ねたい (例: H、E、L、L、O、I、G、D 、に)
どの方法でできるか教えていただければ幸いです。(私もこのサイトの初心者です。これを検索しましたが、見つかりませんでした。存在する場合は申し訳ありません。)
regex - 「updateDet」はキーワード「update」として認識されるべきではありません
このコードで
エラーが発生します
[1.1] 失敗: 文字列に一致する正規表現
\z' expected but
u' が見つかりましたupdateDet,update
修正方法は?updateDet はキーワードとして認識すべきではない
スカラ 2.10.2
ruby - 再帰関数に対するタップの動作
メソッドの戻り値を美しくするために、時々タップを使用するのが好きです。ただし、再帰関数でタップを使用すると、動作が予想とは異なります。
戻り値
タップを使用するようにレンダリング関数を変更すると:
戻る
動作は最初のレンダリング関数と同じであると思います。ドキュメントは、「ブロックにxを生成し、xを返す」ことを示しています...関数が再帰的であるため、何らかの形で関数スタックを汚染していますか?
json - scala コンビネータを使用してケース クラスでオプションの json 値を読み取る方法
オプションで「情報」とその内容を含むことができる JSON を処理しようとしています。これは、次のケース クラスと、JSON をオブジェクトで読み取るためのコンビネータでキャプチャされます。しかし、コードはコンパイルに失敗します。これを処理するより良い方法はありますか?情報を空にすることができます。
コンパイル エラー:
スカラバージョン: 2.11.2
ありがとう、
json - ScalaJsonCombinator(書き込みを定義するとき)のこの「and」は何ですか?
私はこのjsonコンビネータをいくつかの基本的/標準的なケースで使用してきましたが、それがどのように機能するかを本当に理解していません。すべて問題ありませんでした。
今、私はどんな高度なケースが来ても準備を整えたいと思っています。コードを理解する必要があります。
参考:https ://www.playframework.com/documentation/2.3.x/ScalaJsonCombinators
私はReadsを理解できると思います:
次の読み取りを作成します。
最初に ("reads" メソッドを介して) JsValue が指定されると、"lat" が取得され、続いて "long" が取得されます。これら 2 つからタプル (Double、Double) を作成します。-- https://www.playframework.com/documentation/2.3.x/api/scala/index.html#play.api.libs.json.Reads
そのタプルは、その Reads... の部分関数に割り当てられます。この場合は、「Location.apply _」によって返されるものです。私はreplでそれを試しました:
...
その部分関数は (Double, Double) のタプルを入力として受け取ります。したがって、ステップ 1 の結果はステップ 2 に送られ、"reads" の戻り値として Location のインスタンスが取得されます。
では、次のように書き込みます。
まず「申請を取り消す」。私はreplで試しました:
おっと、わかりました、私は指示に従いました:
では、Location のインスタンスを (オプションの) (Double, Double) のタプルに変換する部分関数を取得します。
次に、「アンリフト」:
わかりました... unlift は単純に「オプション」を破棄し、タプルに直接移動します。
わかりました...そう...私は推測します...これはWritesの「書き込み」です... *) Locationのインスタンスが与えられると、次のようになります:
そのオブジェクトを unlift(Location.unapply) によって生成された部分関数に渡します。
その部分関数によって返されたタプル (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
更新:
- 関連する質問の追加: Scala/Play の構文と意味! コードサンプル