問題タブ [scala-cats]

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 投票する
2 に答える
331 参照

scala - cat には scalaz の traverseM に相当するものがありますか?

traverseM猫の from scalaz に相当する関数はありますか? 型シグネチャに一致するものは見つかりませんでした。scalaz scala docs の署名と説明は次のとおりです。

後続のモナド結合が内部結果に適用される traverse のバージョン。

traverseMcatの他の関数に基づいて自分自身を定義するのはかなり簡単でしたが、ライブラリの関数が利用可能であればそれを使用したいと思います。

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

scala - FlatMap インスタンスをインポートすると Applicative ビルダーの構文が壊れる

私の例ではOptions を使用しますが、実際のコードではカスタム データ型を使用していました。インポートを追加するimport cats.std.option._と、例の問題が解決されます。次のようなコードがありました。

このコードは問題なくコンパイルおよび実行されました。

次に、以下Kleisliを返すいくつかの関数を構成していましたOption

FlatMapデータ型にインスタンスがないため、コードはコンパイルされませんでした。私はそれを作成しました:

インスタンスをインポートFlatMap(または同じファイルで定義) すると、ビルダーの構文がコンパイルされなくなります。エラーが発生します:

FlatMapインスタンスをインポートするとビルダー構文が壊れるのはなぜですか? どうすればこれを修正できますか?

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

scala - 猫でこれを行うよりスマートな方法はありますか?

私が達成したいのは、シリアライズ可能で構成可能なプロセス記述子です。基本的に、いくつかのプリミティブProcessor(シリアル化可能) を作成し、それらをより高次の s に構成できるようにしたいと考えProcessorています。その後、すべてが自動的にシリアル化可能のままになるはずです。これが私の現在の実装ですが、いくつかの猫の型クラス/データ構造でこれを行うよりエレガントな方法があると思います。Free、Kleisli、State などの強力なツールを利用する方法が思い浮かばないのは馬鹿げています。私の課題は、状態のタイプ、つまり のデータ フィールドDataWithContextが変化し続けることでした。

でも、それを乗り越える方法があるはずですよね?

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

scala - IntelliJ で猫ライブラリを使用すると誤ったエラーが発生する

私は猫のScalaライブラリを使用していますが、IntelliJ IDEは暗黙の使用に苦労しているようです:

簡単な例を次に示します。

IntelliJ では、このコードは赤で強調表示されます。Make Projectしかし、またはコマンドラインを使用して問題なくビルドできます。

現在、エラーは次のとおりです。

型 Nothing[List[Nothing]] の式は、予期される型 Option[List[A]] に準拠していません

それ以外の場合、エラーは次のようになります。

値シーケンスは List[Option[A]] のメンバーではありません

これは IntelliJ のバグですか、それとも構成が不足していますか?

Scala プラグインのバージョン 2.0.4 で IntelliJ 15.0.2 を使用しています。

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

scala - モナド VS Futures の Applicative ファンクター

2 つのリモート サービスからデータを集約し、可能な限り迅速に応答を返したいとします。


これは非同期タスクを順番に実行することを理解しています:


これは、非同期タスクが順次チェーンされる前にトリガーされるため、それらを並行して実行します。

しかし、その違いは私には少し暗すぎて、最初は気付かない人もいるかもしれません。


Applicatives も仕事を解決します

並列非同期計算を実行するために、アプリケーションとモナドの間で何を使用したいか教えてもらえますか? 各アプローチの長所と短所は何ですか?

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

scala - Scala GADT インスタンス Functor

Haskellで私は得ました:

Scalaで私が思いついた:

しかしBar(40).map(_+2)、私に与えます:

私は Scala にかなり慣れていないため、継承の方法がよくわかりません。

私は何が欠けていますか?

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

scala - Intellij の Scala 型推論は REPL とは異なります

catsのリストでそのトラバース/シーケンス機能を使用するために、プロジェクトでライブラリを使用することを検討していEitherます。しかし、Intellij IDEA で を実行するとShow type、完全に奇妙な推論型が表示されます。同時に、このコードを にコピー アンド ペーストするとsbt console、見栄えがよくきれいな文字になります。例を次に示します。

ご覧のとおり、変数rの型はEither[String, List[Int]].

ただし、Intellij は次のモンスターを推測します。

このタイプを見ただけで理解したまま放っておけば、私のカルマが大幅に低下するため、同僚に苦痛を与えたくありません。最新の Intellij 16.1 EAP および Scala プラグインの EAP ビルド、およびそれらの安定バージョンでこれを試しましたが、すべて同じです。

現時点では他にできることはないと思いますが、もしかしたら、これに対する回避策があるのではないでしょうか?

PS このようなこと (つまり、ツールのサポート) は、少なくとも FP 固有の概念の複雑さ以上に FP の採用を遅らせます。:(

Intellij のトラッカーでの PPS の問題はこちらです。