我注意到 PolyKinds
和 DataKinds
以下编译良好:
data Pair a b
data Test = Test
type Test2 = Pair 'Test 'Test
然而:
type Test3 = ('Test, 'Test)
失败,大概是
(,)
不是种类多态的,这是有道理的,因为它从它的类型参数中产生值,并且你不能产生不是种类的类型的值 *
.是否有一个具有多态元组的库(以节省我重新发明轮子的时间)?
我确实意识到,与真正的元组不同,种类多态元组只会存在于类型级别,但这就是我所需要的。
最佳答案
如果您已经在使用 DataKinds
,您应该只使用内置元组构造函数的升级版本,而不是类型构造函数:
type Test3 = '( 'Test, 'Test)
这个有种
(Test, Test)
.注意
(
之间必须有空格。和 '
; '('Test, 'Test)
是语法错误(解析器中必要的边缘情况)。
关于haskell - 种类多态元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45931774/