像CREATE TABLE group (
groupname text,
username text,
PRIMARY KEY (groupname, username))
这样的类型不起作用,因为Lens'
在Rank-2类型的引擎盖下,不能在没有Maybe (Lens' a b)
扩展名的类型构造函数中包装(这在GHC中并不真正支持。
因此,提供道德上具有类型
的函数的最佳类型是什么-XImpredicativeTypes
可能性是将foo :: A -> Maybe (Lens' B C)
推迟到已通过的继续
Maybe
但我并不特别喜欢。
答案 0 :(得分:7)
这是Control.Lens.Reified
模块的用途。它包含newtype
层次结构的lens
包装器。
foo :: A -> Maybe (ReifiedLens' B C)