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