7

在源代码中modify指出如果这样做是安全的,则操作将在适当的位置执行,否则将修改向量的副本。

但是查看以下代码modify

modify :: Vector v a => (forall s. Mutable v s a -> ST s ()) -> v a -> v a
modify p = new . New.modify p . clone

在我看来,clone它总是被调用(这对我来说很有意义,因为我认为它必须是对不可变向量的破坏性操作)。

我误解了这个吗?如果不是,什么地方clone没有调用的例子,如何Data.Vector实现绕过?

4

0 回答 0