問題タブ [scalaz7]

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

scala - scalaz ストリーム io の append メソッドが無限ループを引き起こす

私は scalaz stream website からこのコードを使用します。to メソッドで動作していますが、append を使用しようとすると失敗し、無限ループのように見えて終了しません。append メソッドを使用する理由は、to メソッドを使用してファイルを書き換えたくないからです。

私はそれについて混乱しています、誰かがここで何が起こっているのか説明してもらえますか

よろしくお願いします

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

scala - Scalaz のシーケンスを使用して T[G[A]] を G[T[A]] に変換する方法

scalaz シーケンスを使用して List[Future[Int]] を Future[List[Int]] に変換するこのコードがあります。

私は scalaz の Future を使用しているため、魔法のように暗黙の解決が行われる可能性があります。型クラスが Future のような事前定義されたクラスではなく、カスタム クラスであるかどうかは疑問ですが、同じ結果を得るために暗黙の解決を定義するにはどうすればよいですか?

よろしくお願いします

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

scala - Vector を Tuple scala に変換する

Scalaで異種ベクトルのベクトルをTuple3のリストに変換することは可能ですか?

すなわち

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

scala - scalaz-streams の Task からの例外をログに記録して無視する

いくつかの scalaz-stream ドキュメントから例を挙げてみましょう。ただし、理論的なひねりがあります。

この場合、ファイルには double 以外の文字列が含まれている可能性が非常に高く、 はfahrenheitToCelsiusいくつかのNumberFormatException. この場合、このエラーをログに記録し、その後のストリーム処理のために無視したいとしましょう。それを行う慣用的な方法は何ですか?いくつかの例を見てきましたが、通常collectFromはストリームです。

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

scala - Scalaz Functor 型クラスの特殊記号

最近、この Scalaz コードに出くわしました (例: https://github.com/scalaz/scalaz/blob/series/7.2.x/core/src/main/scala/scalaz/Functor.scala ):

「Functor」内の型式、つまり λ[α => F[G[α]]] の意味/目的は何ですか? ソファ、私はhttp://like-a-boss.net/2014/09/27/type-lambda-in-scala.htmlのような型エイリアスを見てきました

また、Intellij Idea (14.0.3) はシンボルを解決できません。Intellij の外部で sbt によってビルドされ、Intellij にインポートされた Scalaz。どのような場合に考えられますか?

0 投票する
0 に答える
671 参照

scala - エラーまたはトラバースを蓄積するために、EitherT と Validation を切り替える

次の機能があるとします。

を指定すると、次を使用してList[Id]簡単に取得できます。List[Thingy]Traverse[List]

ベースとなるApplicativeインスタンスを使用するため、最初の のみを取得し、すべてを追加するわけではありません。あれは正しいですか?EitherTflatMapNonEmptyList[Error]

EitherTここで、実際にエラーを累積したい場合は、とを切り替えることができValidationます。例えば:

それは機能し、最後にすべてのエラーが表示されますが、かなり面倒です。コンポジションを使用して簡単にすることができます。Applicative

他のものよりも長くなりますが、すべての配管はコード ベース全体で簡単に共有できます。

私のソリューションについてどう思いますか? この問題を解決するよりエレガントな方法はありますか? 普段はどのように対処していますか?

どうもありがとうございました。

編集:

pimp への自然な変換を使用した一種の狂人のソリューションがありTraversableます。それを機能させるには、明らかにタイプエイリアスが必要です。そのため、再定義しましたgetRemoteThingy

0 投票する
0 に答える
140 参照

stream - scalaz Traverse 型クラスを使用したメモリ効率の良いストリーム トラバーサル

scala.collection.immutable.StreamScalazの (バージョン 7.1.2) 型クラスを使用して大きなストリーム (例: ) をトラバース/シーケンスしようとしていますTraverseが、常にjava.lang.OutOfMemoryError: GC overhead limit exceeded問題が発生しています。

私のトラバーサルはおおよそ次のようになります。

ここではandとMTransを含むモナド変換スタックです。EitherTStateTf: Int => MTrans[Int]

私は通常、要素をシーケンスすること (状態を渡すこと) だけに興味があり、MTrans[Int](実体化された) シーケンス/ストリーム全体ではなく、最終結果 ( ) のみが必要です。

で実行されているバージョンがありますが、これは他の同様の投稿で説明されてtraverseKTrampolineいる問題ではないため、役に立ちません。とStackOverflowErrorの組み合わせも試しましたが、成功しませんでした。EphemeralStreamsequence

そのようなストリームを(メモリ)効率的にトラバース/シーケンスするにはどうすればよいですか?

更新 1

以下は、私がやろうとしていることのより完全な例です。それは私が持っている構造によく似ており、同じ問題を示しています (GC オーバーヘッドの制限がある時点で超えています)。

更新 2

Eric とApplicative vs. Monadic コンビネータと Scalaz のフリー モナドfoldLeftからの入力に基づいて、 applicative を使用した次の単純な に基づくソリューションを思いつきました*>

これは (まだ) スタック セーフに見えますが、大量のヒープ スペースが必要であり、実行が非常に遅くなります。

0 投票する
0 に答える
154 参照

monads - scalaz の ContT モナド変換子を使用して while ループを実装する方法

ContTScalaz 7 でモナド変換子を使用して、whileスタック オーバーフローを防止しながら機能的な方法でループを実装する方法を理解しようとしています。の使用法を示す簡単な例はContT非常に役立ちます。