【发布时间】:2018-12-14 19:37:03
【问题描述】:
Haskell writer monad 在列表 (Writer [w] a) 上的实现将使用 ++ 添加项目。因此,如果我在列表编写器 monad 中编写此代码:
do
tell [a, b, c]
tell [d]
列表将附加[a, b, c] ++ [d]。在 OCaml 中工作后,我认为列表应该使用 cons 运算符 (:) 而不是串联运算符 (++) 构建,因为后者的第一个参数是 O(n)。
我的工作量一次向 writer monad 添加一个“消息”,因此 ++ 的第二个参数通常是一个单例列表。
在 Haskell 中,懒惰会使列表编写器 monad 比在 OCaml 等热切语言中更有效吗?如果不是,对于我的工作量来说,什么是有效的替代方案?
【问题讨论】:
-
创建一个简单的例子并测试它。
标签: haskell linked-list monads writer