如何非毫不含糊地回复“也许”一个镜头?

时间:2017-01-07 15:07:36

标签: haskell lenses higher-rank-types impredicativetypes

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

但我并不特别喜欢。

1 个答案:

答案 0 :(得分:7)

这是Control.Lens.Reified模块的用途。它包含newtype层次结构的lens包装器。

foo :: A -> Maybe (ReifiedLens' B C)