問題タブ [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.
scala - scalaz ストリーム io の append メソッドが無限ループを引き起こす
私は scalaz stream website からこのコードを使用します。to メソッドで動作していますが、append を使用しようとすると失敗し、無限ループのように見えて終了しません。append メソッドを使用する理由は、to メソッドを使用してファイルを書き換えたくないからです。
私はそれについて混乱しています、誰かがここで何が起こっているのか説明してもらえますか
よろしくお願いします
scala - Scalaz のシーケンスを使用して T[G[A]] を G[T[A]] に変換する方法
scalaz シーケンスを使用して List[Future[Int]] を Future[List[Int]] に変換するこのコードがあります。
私は scalaz の Future を使用しているため、魔法のように暗黙の解決が行われる可能性があります。型クラスが Future のような事前定義されたクラスではなく、カスタム クラスであるかどうかは疑問ですが、同じ結果を得るために暗黙の解決を定義するにはどうすればよいですか?
よろしくお願いします
scala - Vector を Tuple scala に変換する
Scalaで異種ベクトルのベクトルをTuple3のリストに変換することは可能ですか?
すなわち
scala - scalaz-streams の Task からの例外をログに記録して無視する
いくつかの scalaz-stream ドキュメントから例を挙げてみましょう。ただし、理論的なひねりがあります。
この場合、ファイルには double 以外の文字列が含まれている可能性が非常に高く、 はfahrenheitToCelsius
いくつかのNumberFormatException
. この場合、このエラーをログに記録し、その後のストリーム処理のために無視したいとしましょう。それを行う慣用的な方法は何ですか?いくつかの例を見てきましたが、通常collectFrom
はストリームです。
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。どのような場合に考えられますか?
scala - エラーまたはトラバースを蓄積するために、EitherT と Validation を切り替える
次の機能があるとします。
を指定すると、次を使用してList[Id]
簡単に取得できます。List[Thingy]
Traverse[List]
ベースとなるApplicative
インスタンスを使用するため、最初の のみを取得し、すべてを追加するわけではありません。あれは正しいですか?EitherT
flatMap
NonEmptyList[Error]
EitherT
ここで、実際にエラーを累積したい場合は、とを切り替えることができValidation
ます。例えば:
それは機能し、最後にすべてのエラーが表示されますが、かなり面倒です。コンポジションを使用して簡単にすることができます。Applicative
他のものよりも長くなりますが、すべての配管はコード ベース全体で簡単に共有できます。
私のソリューションについてどう思いますか? この問題を解決するよりエレガントな方法はありますか? 普段はどのように対処していますか?
どうもありがとうございました。
編集:
pimp への自然な変換を使用した一種の狂人のソリューションがありTraversable
ます。それを機能させるには、明らかにタイプエイリアスが必要です。そのため、再定義しましたgetRemoteThingy
:
stream - scalaz Traverse 型クラスを使用したメモリ効率の良いストリーム トラバーサル
scala.collection.immutable.Stream
Scalazの (バージョン 7.1.2) 型クラスを使用して大きなストリーム (例: ) をトラバース/シーケンスしようとしていますTraverse
が、常にjava.lang.OutOfMemoryError: GC overhead limit exceeded
問題が発生しています。
私のトラバーサルはおおよそ次のようになります。
ここではandとMTrans
を含むモナド変換スタックです。EitherT
StateT
f: Int => MTrans[Int]
私は通常、要素をシーケンスすること (状態を渡すこと) だけに興味があり、MTrans[Int]
(実体化された) シーケンス/ストリーム全体ではなく、最終結果 ( ) のみが必要です。
で実行されているバージョンがありますが、これは他の同様の投稿で説明されてtraverseKTrampoline
いる問題ではないため、役に立ちません。とStackOverflowError
の組み合わせも試しましたが、成功しませんでした。EphemeralStream
sequence
そのようなストリームを(メモリ)効率的にトラバース/シーケンスするにはどうすればよいですか?
更新 1
以下は、私がやろうとしていることのより完全な例です。それは私が持っている構造によく似ており、同じ問題を示しています (GC オーバーヘッドの制限がある時点で超えています)。
更新 2
Eric とApplicative vs. Monadic コンビネータと Scalaz のフリー モナドfoldLeft
からの入力に基づいて、 applicative を使用した次の単純な に基づくソリューションを思いつきました*>
。
これは (まだ) スタック セーフに見えますが、大量のヒープ スペースが必要であり、実行が非常に遅くなります。
monads - scalaz の ContT モナド変換子を使用して while ループを実装する方法
ContT
Scalaz 7 でモナド変換子を使用して、while
スタック オーバーフローを防止しながら機能的な方法でループを実装する方法を理解しようとしています。の使用法を示す簡単な例はContT
非常に役立ちます。