相关疑难解决方法(0)

模块化程序设计 - 将Monad变压器与Monad不可知功能相结合

我想提出一个模块化的程序设计,我再次请求你的帮助.

作为以下帖子的后续Monad变形金刚与Haskell中的传递参数大规模设计,我正在尝试构建两个独立模块,使用Monad变换器但暴露Monad不可知函数,然后结合Monad不可知函数来自每个这些模块成为一个新的Monad不可知功能.

我已经无法运行相结合的功能,例如我怎么打电话mainProgram使用runReaderT下面的例子?

附属问题是:是否有更好的方法来实现相同的模块化设计目标?


该示例有两个模拟模块(但编译),一个执行日志记录,另一个读取用户输入并对其进行操作.组合功能读取用户输入,记录并打印它.

{-# LANGUAGE FlexibleContexts #-}

module Stackoverflow2 where

import Control.Monad.Reader

----
---- From Log Module - Writes the passed message in the log
---- 

data LogConfig = LC { logFile :: FilePath }

doLog :: (MonadIO m, MonadReader LogConfig m) => String -> m ()
doLog _ = undefined


----
---- From UserProcessing Module - Reads the user Input and changes it to the configured case …
Run Code Online (Sandbox Code Playgroud)

haskell monad-transformers

13
推荐指数
2
解决办法
1239
查看次数

标签 统计

haskell ×1

monad-transformers ×1