【发布时间】:2009-07-05 05:24:52
【问题描述】:
在 Haskell 中,可以这样定义数据类型:
data Point1 = Point1 {
x :: Integer
, y :: Integer
}
可以对数据类型中的变量使用类型类吗?如果有怎么办?我意识到可以将其作为代数数据类型来执行,对每种类型的点都有不同的定义,但我想知道是否有办法以更紧凑和灵活的方式完成此操作。
例如类似于此 pseudocode 的内容,它使用函数声明语法:
data Point2 = Point2 {
x :: (Num a, Ord a) => a
, y :: (Num a, Ord a) => a
}
目标是允许将 Int、Integer、Float 或 Double 值存储在数据类型。理想情况下,我想限制它,使 x 和 y 必须是同一类型。
【问题讨论】: