monad-transformers

    4熱度

    2回答

    我正在苦苦掙扎着榆樹缺乏monad。一個實現Elm狀態monad的庫(http://package.elm-lang.org/packages/folkertdev/elm-state/latest/State)對我有很大的幫助。 問題是,現在我遇到了交替嵌套Result和狀態類型的情況,當時我只想每個都有一個。 我試着用下面的簽名寫一個函數,但似乎不可能,因爲只有在評估外部狀態時纔會知道內部結果

    1熱度

    1回答

    我想依次驗證字符串列表和定義驗證結果類型這樣的: import cats._, cats.data._, cats.implicits._ case class ValidationError(msg: String) type ValidationResult[A] = Either[NonEmptyList[ValidationError], A] type ListValidatio

    0熱度

    2回答

    我很努力實現以下目標:我的API請求的輸入方式是返回一個期望的值,或者當狀態碼未指示成功時返回錯誤,或者身份驗證令牌已無效等:Either String r。 現在,我不想關心它,當我的組件查詢eval。我只對快樂的路徑感興趣(預期的錯誤,如無效登錄嘗試被認爲是開心路徑,只是想讓意想不到的東西脫離它),並且錯誤應該在全球範圍內統一處理(向總線發送一些通知)。 對於這一點,我已經創建變壓器堆棧: t

    2熱度

    1回答

    使用貓,有沒有更好/更習慣的方式來做到這一點? class Foo class Bar extends Foo val eithertBar = EitherT.apply(SomeMonad(Right[Whatever, Bar](new Bar))) val eithertFoo = EitherT[SomeMonad, Whatever, Foo].apply(eithertBar

    3熱度

    1回答

    序言 這是那些我認爲,有人已經解決了我的問題的問題之一,但我不知道去哪裏找。 問題 我要找攜帶的是這樣的單子堆棧的操作將無法進行類型檢查,除非它是完整的完全或不完全的想法MonadTransformer。 我的情況 我有一個單子與持有兆乏的狀態疊加。未能寫入此MVar將導致thread blocked indefinitely in an MVar異常。我可以檢查MVar本身,但將它交給另一個線程

    7熱度

    1回答

    我想用OptionT來結合方法返回Future[Option[T]]在for-comprehension。 import cats.data._ import cats.implicits._ import cats.instances.future._ for { data <- OptionT(repo.getData(id)) ... } 編譯器錯誤,我越來

    3熱度

    2回答

    我想開始我的項目中使用免費的單子,我掙扎,使其優雅。 比方說,我有兩個上下文(在現實中我有更多) - Receipt和User - 都有一個數據庫的操作,我想保持自己的獨立口譯員,並在最後時刻撰寫他們。 爲此,我需要爲每個操作定義不同的操作,並使用Coproduct將它們合併爲一個類型。 這是我在Google上搜尋和閱讀的天: // Receipts sealed trait ReceiptOp

    1熱度

    1回答

    內部的ExceptT String IO() 我有一個產生ReaderT像這樣一個功能的DO塊: type UDCEnv = (AWS.Env, Bool) uploadVersionFilesToCaches :: S3.BucketName -> FilePath -> [GitRepoNameAndVersion]

    1熱度

    1回答

    我已經定義了一個單子變壓器UlffT如下。 我正在與Halogen,但這不是Halogen -question - 我只是提供上下文。 UlffT意味着堆疊在Aff上,並在HalogenM中使用。 newtype UlffT m a = UlffT (ExceptT Error (ReaderT Env m) a) unUlffT :: forall m. UlffT m ~> ExceptT

    2熱度

    1回答

    摘要:使用Writer monad時,我希望能夠在不失去狀態的情況下在mappend的2個不同版本之間切換。 我用兩個布爾標誌來跟蹤一些狀態: data Flags = F Bool Bool 現在我定義了兩個Monoid情況下它的方式不同,他們結合旗幟mappend: newtype XFlags = XF Flags instance Monoid XFlags where