是否可以使用constrained data type声明record syntax?我的尝试
data ConstrainedRecord a where
ConstrainedRecord :: Num a => { first :: a, second :: a }
导致GHC抱怨“记录语法在这里是非法的。”
答案 0 :(得分:12)
是的,但在GADT syntax中,您始终必须明确指定构造函数的返回类型:
data ConstrainedRecord a where
ConstrainedRecord :: Num a => { first :: a, second :: a } -> ConstrainedRecord a
(另外,这可能会派上用场:
deriving instance (Show a) => Show (ConstrainedRecord a)
使用StandaloneDeriving
,因为普通的deriving
不起作用。)