是否可以使用记录语法声明受限数据类型?
Is it possible to declare a constrained data type using record syntax?
是否可以声明 constrained data type using record syntax?我的尝试
data ConstrainedRecord a where
ConstrainedRecord :: Num a => { first :: a, second :: a }
导致 GHC 抱怨 "Record syntax is illegal here"。
是的,但在 GADT syntax 中,您始终必须明确指定构造函数的 return 类型:
data ConstrainedRecord a where
ConstrainedRecord :: Num a => { first :: a, second :: a } -> ConstrainedRecord a
(此外,这可能会派上用场:
deriving instance (Show a) => Show (ConstrainedRecord a)
使用 StandaloneDeriving
,因为正常的 deriving
不起作用。)
是否可以声明 constrained data type using record syntax?我的尝试
data ConstrainedRecord a where
ConstrainedRecord :: Num a => { first :: a, second :: a }
导致 GHC 抱怨 "Record syntax is illegal here"。
是的,但在 GADT syntax 中,您始终必须明确指定构造函数的 return 类型:
data ConstrainedRecord a where
ConstrainedRecord :: Num a => { first :: a, second :: a } -> ConstrainedRecord a
(此外,这可能会派上用场:
deriving instance (Show a) => Show (ConstrainedRecord a)
使用 StandaloneDeriving
,因为正常的 deriving
不起作用。)