如何使用镜头从数组中删除元素

问题描述 投票:0回答:1

我正在尝试使用元素的索引从

Array a
中删除元素,但我找不到使用
Lens
es 执行此操作的方法。我还想知道为什么
Array
不提供
At
镜头的实例。有指示吗?

purescript lenses
1个回答
0
投票

我还想知道为什么 Array 不提供

At
镜头的实例。

您可以查看

Control.Lens.At
模块文档 获取提示:

...不是类似数组的数组,因为你无法满足透镜定律

违反的法律之一是

set l v' (set l v s) ≡ set l v' s
。原因是删除一个索引会移动其他索引。所以下面的内容是没有意义的:

myArray
  & at 6 .~ Nothing
  & at 6 .~ Just 10

我不知道有什么方法可以像 Lens 一样删除数组元素。

© www.soinside.com 2019 - 2024. All rights reserved.