我注意到PolyKinds
和DataKinds
以下编译正常:
data Pair a b
data Test = Test
type Test2 = Pair 'Test 'Test
然而:
type Test3 = ('Test, 'Test)
失败,大概是因为(,)
不是多态的,这是有意义的,因为它从它的类型参数中创建值,而你不能创建不属于*
的类型的值。 / p>
是否有一个具有类型多态元组的库(为了节省我重新发明轮子)?
我确实意识到,与真正的元组不同,类型多态元组只存在于类型级别,但这就是我需要的所有目的。
答案 0 :(得分:12)
如果您已经在使用DataKinds
,则应该使用内置元组构造函数的升级版本,而不是类型构造函数:
type Test3 = '( 'Test, 'Test)
这有点(Test, Test)
。
请注意(
和'
之间必须有空格; '('Test, 'Test)
是语法错误(解析器中必要的边缘情况)。