Haskell 让这个'getIndex'成为可能吗?

Haskell 让这个'getIndex'成为可能吗?,haskell,haskell-lens,Haskell,Haskell Lens,是否可以制作以下类型的光学元件: getIndex :: Lens.IndexedGetter i a i 我找不到一个现有的索引,在尝试编写一个索引失败的过程中,我感觉它无法完成,但如果是这样的话,我想知道原因的解释。索引是由getter任意定义的,因此没有通用的方法来创建索引 索引器i s i通过以下双射同构于s->(i,i): ito :: (s -> (i, a)) -> IndexedGetter i s a iview :: IndexedGetter i s a

是否可以制作以下类型的光学元件:

getIndex :: Lens.IndexedGetter i a i

我找不到一个现有的索引,在尝试编写一个索引失败的过程中,我感觉它无法完成,但如果是这样的话,我想知道原因的解释。

索引是由getter任意定义的,因此没有通用的方法来创建索引

索引器i s i
通过以下双射同构于
s->(i,i)

ito   :: (s -> (i, a)) -> IndexedGetter i s a
iview :: IndexedGetter i s a -> s -> (i, a)
forall s i。IndexedGetter i s i
(完全量化的
getIndex
)将与所有s i的
同构。s->(i,i)
,但那没有人居住(这意味着
()->(Void,Void)
s~()
i~Void