タグ付けされた質問 「scalaz」

1
Scalazが反復する:「大きい」モナドの「IterateeT」に一致するように「列挙」Tを「持ち上げる」
EnumeratorTと対応するものがあれば、IterateeT一緒に実行できます: val en: EnumeratorT[String, Task] = EnumeratorT.enumList(List("a", "b", "c")) val it: IterateeT[String, Task, Int] = IterateeT.length (it &= en).run : Task[Int] 列挙モナドがiterateeモナドよりも「大きい」場合、私は一致するようにiterateeを使用するupか、より一般的にHoistは「持ち上げ」ます。 val en: EnumeratorT[String, Task] = ... val it: IterateeT[String, Id, Int] = ... val liftedIt = IterateeT.IterateeTMonadTrans[String].hoist( implicitly[Task |>=| Id]).apply(it) (liftedIt &= en).run: Task[Int] しかし、iterateeモナドが列挙子モナドよりも「大きい」場合、どうすればよいでしょうか。 val en: EnumeratorT[String, …

8
良いscalazの紹介[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 7年前休業。 この質問を改善する 最近scalazが私の目を引きました。とても興味深いように見えますが、私はライブラリへの良い紹介を見つけていません。scalazはhaskellと数学から多くのアイデアを取り入れているようです。私が見つけたほとんどの記事は、あなたがすでにこれらの概念に慣れていると仮定しています。 私が探しているのは、ライブラリと基礎となる概念への段階的な導入です-シンプルで基本的な概念からより高度な(基本に基づく)概念まで。 例も見てみましたが、図書館の勉強を始めるべきポイントを見つけるのは難しいです。 誰かが私にいくつかの良いscalazの紹介またはチュートリアル(基本と高度な概念をカバーする)を勧めることができますか?または、答えの出発点を教えてください。 更新 すばらしい回答をありがとうございました!私はすべての回答をまとめ、ブログにいくつかのリンクを追加しました: https://github.com/OlegIlyenko/hacking-scala-blog/blob/master/posts/Scalaz-Resources-For-Beginners.md そして、ScalazのAPIドキュメントを見つけるのに苦労している人のために、ここにあります: http://docs.typelevel.org/api/scalaz/nightly/index.html#package
215 scala  scalaz 

1
Scalaz 7のzipWithIndex / group列挙子によるメモリリークの回避
バックグラウンド この質問で述べたように、私はScalaz 7反復を使用して、一定のヒープスペースでデータの大規模な(つまり、制限のない)ストリームを処理しています。 私のコードは次のようになります: type ErrorOrT[M[+_], A] = EitherT[M, Throwable, A] type ErrorOr[A] = ErrorOrT[IO, A] def processChunk(c: Chunk, idx: Long): Result def process(data: EnumeratorT[Chunk, ErrorOr]): IterateeT[Vector[(Chunk, Long)], ErrorOr, Vector[Result]] = Iteratee.fold[Vector[(Chunk, Long)], ErrorOr, Vector[Result]](Nil) { (rs, vs) => rs ++ vs map { case (c, i) => processChunk(c, i) …
106 scala  scalaz  iterate 

2
依存性注入のためのリーダーモナド:複数の依存性、ネストされた呼び出し
Scalaでの依存性注入について尋ねられたとき、かなり多くの回答が、Scalazからのものか、または単に独自のものをローリングするかのいずれかで、ReaderMonadを使用することを示しています。アプローチの基本を説明する非常に明確な記事がいくつかありますが(たとえば、Runarの講演、Jasonのブログ)、より完全な例を見つけることができず、そのアプローチの利点を他の人よりも理解できていません。従来の「手動」DI(私が書いたガイドを参照)。おそらく私はいくつかの重要な点を見逃しているので、質問です。 例として、次のクラスがあると想像してみましょう。 trait Datastore { def runQuery(query: String): List[String] } trait EmailServer { def sendEmail(to: String, content: String): Unit } class FindUsers(datastore: Datastore) { def inactive(): Unit = () } class UserReminder(findUser: FindUsers, emailServer: EmailServer) { def emailInactive(): Unit = () } class CustomerRelations(userReminder: UserReminder) { def retainUsers(): Unit = …

1
状態遷移のシーケンスストリームとして記述されたプログラムをscalaz-streamに置き換えるにはどうすればよいですか?
以前は状態遷移のシーケンスとして作成したプログラムを再編成する方法を理解しようとしています。 私はいくつかのビジネスロジックを持っています: type In = Long type Count = Int type Out = Count type S = Map[Int, Count] val inputToIn: String => Option[In] = s => try Some(s.toLong) catch { case _ : Throwable => None } def transition(in: In): S => (S, Out) = s => { val …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.