haskell - 种类多态元组

标签 haskell

我注意到 PolyKindsDataKinds以下编译良好:

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/

相关文章:

haskell - 理解状态单子(monad)

haskell - 如何在这里避免显式类型签名?

haskell - 如何解决重叠实例

haskell - 可打字类型转换 GADT

haskell - 状态 Monad : Modifying state without modifying value

haskell - 为什么这个简单的组合不起作用?

haskell - 什么是 Cabal 组件以及如何使用它们?

haskell - 解析 PHOAS 表达式

haskell - 如何在 Haskell 中为类创建相等运算符?

haskell - 使用折叠实现 takeWhile