Haskell 是否使用快速检查生成存在类型?

Haskell 是否使用快速检查生成存在类型?,haskell,quickcheck,existential-type,Haskell,Quickcheck,Existential Type,我正在努力解决这个问题-QuickCheck如何为所有类型生成值?也许它可以伪造它,并且只测试具有上下文任意a=>a的类型 我只是想知道,如何有人可以为具有存在类型的数据构造函数创建任意的实例: data Foo a = Foo a (forall b. (a -> b, b -> a)) 很难说出您真正想要做什么,尤其是因为您的示例类型没有太多意义。考虑其他事项: newtype WrappedLens s t a b = WrappedLens (forall f . Func

我正在努力解决这个问题-QuickCheck如何为所有类型生成值?也许它可以伪造它,并且只测试具有上下文
任意a=>a
的类型

我只是想知道,如何有人可以为具有存在类型的数据构造函数创建任意的实例:

data Foo a = Foo a (forall b. (a -> b, b -> a))

很难说出您真正想要做什么,尤其是因为您的示例类型没有太多意义。考虑其他事项:

newtype WrappedLens s t a b = WrappedLens (forall f . Functor f => (a -> f b) -> s -> f t)

newtype WL = WL (WrappedLens (Int, Int) (Int, Int) Int Int)
是否可以制作任意的
WL
?当然只需显式地传递
fmap
,并使用任意函数实例。有没有可能制造出一个任意的、守法的镜头?现在这是一个更高的要求


我推测,涉及高阶类型的任意值的困难并不是类型,而是它们倾向于以某种方式涉及函数,并且很难将任意函数约束到真正要考虑的函数。另外,这不是一种秩2类型,不是一种存在类型吗?事实上,这种类型的唯一值看起来至少和

fooa1(const undefined,const a2)