Tom*_*ton 1 haskell functional-programming record
我想说我的记录属性必须属于一个类型类,因此它们不受该类型类中的特定类型的限制。我想要做的代码示例:
data Complex = Complex {
real :: Num a => a,
imag :: Num b => b
}
Run Code Online (Sandbox Code Playgroud)
这是可能的,如果是这样,如何?
通常,您会参数化类型本身
data Complex a b = Complex { real :: a, image :: b }
Run Code Online (Sandbox Code Playgroud)
或者更有可能
data Complex a = Complex { real :: a, image :: a }
Run Code Online (Sandbox Code Playgroud)
并对使用该类型的任何函数施加约束:
foo :: Num a => Complex a -> a
foo c = 3 * real c - 5 * imag c
Run Code Online (Sandbox Code Playgroud)
或者
bar :: Num a => Complex a -> Complex a
bar (Complex r i) = Complex (3 * r) (negate (5 * i))
Run Code Online (Sandbox Code Playgroud)