【发布时间】:2018-09-05 14:43:40
【问题描述】:
我有一个带有关联类型的类型类:
class Foo a where
type Bar a :: *
...
现在,我想为包含存在量化类型变量的复合类型实例化此类:
data Blat = forall a. Blat a
instance Foo Blat where
type Bar Blat = ???
在我的实际应用中,“???”需要利用Blat a中存在性隐藏的“a”,以使程序逻辑正确。
这在 Haskell 中可行吗?
如果有,怎么做?
===
响应@leftaroundabout 要求全面披露我的初衷:
我正在尝试构建类型的表示,只使用一小组“原语”(即 - 单位、总和和乘积)。 而且,对于复合类型,我想为构成新类型的字段寻求预先存在的表示实例的帮助。 对于显式参数化的字段类型,这很简单。 但是,我也希望能够使用存在隐藏的类型参数对字段类型执行此操作。
【问题讨论】:
标签: haskell typeclass existential-type associated-types