scalaz

    0熱度

    1回答

    (for { orderId <- ListT(extractParamFromHttp(request).toList) // extractParamFromHttp(request) returns Option[Long] order <- ListT(serviceA.retrieve(orderId).map(_.toList)) // serviceA.retri

    0熱度

    1回答

    我有akka camel-ftp消費者。我想處理代碼中的所有異常(例如,身份驗證異常,或無法讀取ftp上的文件)。我只能看到日誌中的堆棧跟蹤,無法處理它。 也許最好使用scalaz-camel。 此外,我想知道,當所有的文件處理和演員閒置,直到下一次讀的FTP文件夾 class FtpWorkerActor() extends Consumer with ActorLogging {

    0熱度

    1回答

    鑑於現有方法相結合˚F def f : Kleisli[Future, Context, Seq[Tip]] = ??? 我需要將使用f取決於條件一個組合子。 這裏是我目前的impl: def g(selected: Seq[Tip]) = if (selected.isEmpty) f else Kleisli[Future, Context, S

    1熱度

    1回答

    因爲我想合併Kleisli,對長方法Future工作,可能會失敗Either,我需要疊加效果。下面是在Kleisli中疊加效果的結果代碼。 scalaz中是否存在combinator? type FutureEitherT[A] = EitherT[Future, String, A] def toKleisliEitherTFromDisjunction[A](f: Kleisli[Futu

    10熱度

    1回答

    讀過書Learn you a Haskell For Great Good,以及非常有幫助維基書的文章Haskell Category Theory這幫助我克服了普通類的錯誤of confusing category objects with the programming objects,我還是有以下問題: 爲什麼必須fmap地圖列表的每一個元素了嗎? 我喜歡它的確如此,我只是想理解這是如何在理

    0熱度

    1回答

    我使用的是Scala 2.11和Scalaz 7.2.3(最新版)。 我在組合Kleisli時遇到了麻煩。我有兩個功能: type A = ... type B = ... def set: Set[A] def f: A => Kleisli[scalaz.effect.IO, B, Unit] val result: Set[Kleisli[scalaz.effect.IO, B,

    24熱度

    1回答

    當您的計算步驟是獨立的時候,經常提到應用函子作爲monads的替代方案。他們經常提到的優點之一是,當您想堆疊應用程序時,不需要變壓器,因爲F[G[X]]始終也是一個應用程序。 比方說,我有以下功能: def getDataOption(): Option[Data] def getUserFuture(): Future[User] def process(data: Data, user:

    7熱度

    1回答

    在Haskell自由的實現是: data Free f a = Pure a | Free (f (Free f a)) ,而在Scalaz實現如下: sealed abstract class Free[S[_], A] private case class Return[S[_], A](a: A) extends Free[S, A] private case class Su

    0熱度

    1回答

    參數化類型別名我有一個Seq[R],我想拆分此爲Tuple2[Seq[E], Seq[S]],我編寫此我想到的是,我可以使用自定義Bifunctor爲seqs和鍛鍊一個元組,而試圖實現代碼: import scalaz.Bifunctor type MyType[E, S] = (Seq[E], Seq[S]) case class MyVali[E, S](tp: (Seq[E], Se

    0熱度

    1回答

    如何打開Eithers的List到Lists一個Either列表,使用MonadPlus.separate? 在this answer作者聲稱該方案,但未能提供進口或完整的例子: 如果scalaz是你的一個依賴我會簡單地使用單獨的: val el : List[Either[Int, String]] = List(Left(1), Right("Success"), Left(42)) sc