Her*_* Yi 3 haskell compiler-errors type-families
我正在尝试定义一个数据类型系列,其中一个参数导致空元组的类型(),但它不编译.这是一个最小的工作示例:
{-# LANGUAGE TypeFamilies #-}
data family F a
data instance F Int = ()
Run Code Online (Sandbox Code Playgroud)
抛出的编译器错误说"内置语法的非法绑定:()".为什么我得到这个错误,即使我不是要改变定义(),而是将其设置为某些计算的输出(类型族的评估)?
对于它的价值,当程序编译()改为Bool代替.
对于数据族,您应该在等式的右侧提供ADT或GADT定义.()不是构造函数的有效定义.data instance F Int = Bool声明一个具有名称的构造函数,该构造函数Bool有效,但与该类型无关Bool.它只是Bool作为构造函数名称提供.
您尝试做的事情可以通过类型系列来实现:
type family F a
type instance F Int = ()
-- or in closed form
type family F a where
F Int = ()
Run Code Online (Sandbox Code Playgroud)
或者你可以为数据实例提供一个右侧,它相当于():
data instance F Int = FUnit
Run Code Online (Sandbox Code Playgroud)