相关疑难解决方法(0)

是否可以访问monad变换器所需的monad内部结构?

是否有必要访问monad的内部结构来编写monad变换器?

例如:我想从Data.Binary.Get中GetT获取Getmonad的变换器,但是这个模块不会暴露Getmonad的内部.这是否意味着我唯一的方法是GetT直接添加到Data.Binary.Get模块?

monads haskell monad-transformers

10
推荐指数
1
解决办法
395
查看次数

组合两个monad变压器堆栈时无法导出Applicative

我已经为我正在开发的特定领域语言编写了两个monad.第一个是Lang,它应该包括逐行解析语言所需的所有内容.我知道我会想要读者,作家和国家,所以我使用了RWSmonad:

type LangLog    = [String]
type LangState  = [(String, String)]
type LangConfig = [(String, String)]

newtype Lang a = Lang { unLang :: RWS LangConfig LangLog LangState a }
  deriving
    ( Functor
    , Applicative
    , Monad
    , MonadReader LangConfig
    , MonadWriter LangLog
    , MonadState  LangState
    )
Run Code Online (Sandbox Code Playgroud)

第二个是Repl,它使用Haskeline与用户交互:

newtype Repl a = Repl { unRepl :: MaybeT (InputT IO) a }
  deriving
    ( Functor
    , Applicative
    , Monad
    , MonadIO
    )
Run Code Online (Sandbox Code Playgroud)

似乎都独立工作(他们编译和我与他们在GHCI行为玩耍了),但我一直无法嵌入Lang …

haskell monad-transformers deriving newtype

6
推荐指数
1
解决办法
363
查看次数

标签 统计

haskell ×2

monad-transformers ×2

deriving ×1

monads ×1

newtype ×1