【发布时间】:2014-01-23 22:07:19
【问题描述】:
在尝试使用 Edwards lens 库时,我很难过 again。我尝试在状态上下文中将 snoc 一些东西放到向量的末尾:
data Foo = Foo {
_vec :: Vector Int
}
makeLenses ''Foo
testCons x = vec <>= singleton x
虽然这可行,但我想使用[cons][2],但我不知道如何使用。文档中提到了[0,1,2] |> 3 === [0,1,2,3],但我不知道如何在状态上下文中执行此操作。
【问题讨论】:
-
你会添加很多元素吗?如果是这样,您应该改用Sequence。对 Vector 进行 consing/snocing 是 O(n),但对于 Sequence 是 O(1);另一方面,与向量的 O(1) 相比,序列具有 O(log n) 的随机访问。
-
@Kata yay ...我知道 :-) ...我可能应该在实际代码中使用
Foo f a = Foo (f a)。
标签: haskell haskell-lens