相关疑难解决方法(0)

如何设计monadic堆栈?

你如何设计和构建你的monadic堆栈?我第一次需要构建一个monadic堆栈(使用变换器)来解决现实问题,但我并不完全确定堆叠变换器的顺序.如你所知,只要计算有点* -> *,基本上任何东西都可以在变换器中扮演内部monad的角色,因此有几个问题:

  • 一些特定的变压器应该在堆栈的顶部(例如ReaderT?WriterT?)
  • 什么应该驱动设计?直觉?类型?(例如根据API的需要塑造堆栈)
  • 每个堆栈是否彼此同形(在某种程度上)或者可能是,如果我错误地构建我的堆栈,我可能最终无法使用某些底层monad或者有一个大臃肿的混乱lift . lift . liftIO [...]?我的直觉是,如果变形金刚得到一些实例(例如MonadReader,MonadIO等,就像大多数变形金刚mtl一样),那么放置变压器的顺序并不重要.

我有兴趣听取经验丰富的Haskellers关于最佳实践或经验法则的意见.

forever $ print "Thanks!"

一个.

haskell types design-patterns monad-transformers

22
推荐指数
2
解决办法
834
查看次数