我想知道是否可以构造以下功能
ix :: (Applicative a, Traversable t) => Int -> (v -> a v) -> (t v -> a (t v))
用于pure
除第 i 个元素外的所有元素v -> a v
(使用指定索引遍历值)。
基本上我试图为所有可遍历的函数概括以下函数。还是不可能?Traversable 总是可以转换为Zipper,我认为它可以被推广。
idx _ _ [] = pure []
idx 0 f (x:xs) = (:xs) <$> f x
idx i f (x:xs) = (x:) <$> idx (i - 1) f xs