Learn You a Haskell演示了DiffList概念:
*Main Control.Monad.Writer> let f = \xs -> "dog" ++ ("meat" ++ xs)
*Main Control.Monad.Writer> f "foo"
"dogmeatfoo"
列表从左到右构建的DiffList
的主要好处是什么?
答案 0 :(得分:0)
DList
包列出了一些渐近:https://hackage.haskell.org/package/dlist-0.5/docs/Data-DList.html
您会注意到很多事情只需要O(1),包括cons
,snoc
和append
。但是,请注意,检查列表需要每次强制执行大量操作,因此如果您要进行更多检查而不是构造,或者将两者交错,DList
方法不一定是胜利。