Haskell 数据族实例非法绑定到内置语法:()

Haskell 数据族实例非法绑定到内置语法:(),haskell,compiler-errors,type-families,Haskell,Compiler Errors,Type Families,我试图定义一个,它的一个参数导致空元组的类型(),但它不编译。下面是一个简单的工作示例: {-# LANGUAGE TypeFamilies #-} data family F a data instance F Int = () 抛出的编译器错误为“内置语法的非法绑定:()”。为什么会出现此错误,即使我没有尝试更改()的定义,而是将其设置为某些计算的输出(类型族的计算) 值得一提的是,当()改为Bool时编译的程序。对于数据族,应该在等式的右侧提供ADT或GADT定义()不是构造函数的有效

我试图定义一个,它的一个参数导致空元组的类型
()
,但它不编译。下面是一个简单的工作示例:

{-# LANGUAGE TypeFamilies #-}

data family F a
data instance F Int = ()
抛出的编译器错误为“内置语法的非法绑定:
()
”。为什么会出现此错误,即使我没有尝试更改
()
的定义,而是将其设置为某些计算的输出(类型族的计算)


值得一提的是,当
()
改为
Bool
时编译的程序。

对于数据族,应该在等式的右侧提供ADT或GADT定义<代码>()不是构造函数的有效定义
data实例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 = ()
或者,您可以为数据实例指定一个右侧,它相当于
()

data instance F Int = FUnit