monad-transformers

    3熱度

    2回答

    我正在嘗試使用任務並行庫來對樹進行求和,其中子任務僅在樹遍歷到特定深度之前產生,否則它將使用剩餘的子節點進行求和延續傳遞風格,避免堆棧溢出。 但是,代碼看起來非常難看 - 使用狀態monad來攜帶當前深度會很好,但狀態monad不是尾遞歸。或者,我將如何修改繼續monad以攜帶狀態?或者創建一個狀態和延續monads的組合? let sumTreeParallelDepthCont tree co

    2熱度

    2回答

    我一直在關注和擴展教程Write Yourself A Scheme。我有一個類型LispVal在幾個單子變壓器層包裹起來: import qualified Data.Map as M data LispVal = ... data LispError = ... type Bindings = M.Map String (IORef LispVal) data Env = Envi

    5熱度

    1回答

    我有一個包括一個ErrorT monad變壓器堆棧,我想圍繞整個事情包裝一個ContT r變壓器。當我嘗試這樣做時,我撥打throwError會生成類型錯誤 - 顯然ContT r不會自動成爲MonadError的實例。好吧,我想 - 我只是使它成爲一個:使用liftCatch一些合適的定義 instance MonadError e m => MonadError e (ContT r m) w

    2熱度

    1回答

    我正在使用Pipes-2.1.0包和zeromq3-haskell包構造一個小消息管道。一切似乎都進展順利,只是我無法理解Frames的定稿。 在下面的框架中我獲得兩個資源;一個zeromq上下文和一個zeromq套接字。然後,我不斷等待消息(形式爲ByteStrings)在zeromq套接字上發佈。 {-# LANGUAGE RebindableSyntax #-} {-# LANGUAGE

    1熱度

    1回答

    我正在爲我參加的課程編寫一個小型編譯器。所以我開始寫這個monad變換器來處理類型檢查,但是得到了一個非常神祕的類型錯誤。涉及函數依賴的東西,我不太清楚。 從程序的小摘錄,可以重現錯誤: import Control.Monad.RWS.Lazy import qualified Data.Map as M import Control.Applicative --Placeholders

    10熱度

    3回答

    我想編寫seq -m和錯誤-m做可以返回錯誤的事情的列表解析。我的輸出有意想不到的類型,但除此之外它確實看起來是明智的。我在下面爆炸了我的代碼,但這裏也是working gist。 這裏是我的單子的業務邏輯 def get_loan(name): m_qualified_amounts = ( bind(get_banks(name), lambda bank:

    3熱度

    1回答

    我想在我的attoparsec解析器中做一些跟蹤/調試。下面是最小[不]工作示例: import Data.Text as T import Data.Attoparsec.Text import Data.Attoparsec.Combinator import Control.Applicative ((<*), (*>)) parseSentences :: Parser [T.T

    6熱度

    1回答

    假設我有 type VS[A] = Validation[String, A] val v: VS[Option[A]] val f: A => VS[B] 我想VS[Option[B]]類型的結果,但如果v是Success(None),結果也應該是Success(None)。這裏有一個例子: scala> val v: VS[Option[String]] = some("4.5").

    3熱度

    3回答

    您好我正在編寫一個類似C語言的Haskell靜態類型語言的解釋器。我想在執行代碼之前執行類型檢查,但是我遇到了一些問題。首先,下面有從我的抽象語法某種類型的定義: newtype Ident = Ident String deriving (Eq,Ord,Show) data Exp = {-- some other value constructors --} | EFuncWithParam

    3熱度

    2回答

    正如我在使用Happstack時通常那樣,我一直在使用自己的服務器monad用於處理程序,用於覆蓋我的數據庫和會話以及一些錯誤處理。我最近發現了happstack-clientsession-Package是一個很大的幫助,並且阻止我編寫自己的解決方案。 雖然在我自己的ClientSessionT monad中有一點麻煩。事實證明,它沒有MonadReader或MonadError實例,所以我不能