创建Num实例时出现否定错误

时间:2013-05-16 11:09:47

标签: haskell

我为复数创建了一个数据类型,我正在尝试为此数据类型创建一个Num实例。我一直试图添加否定行,因为它对我的show函数是必要的,但是我一直得到这个错误 - “negate”不是数据构造函数。

以下是该实例的代码:

instance Num Complex where
  (C u v) + (C x y) = (C (u+x) (v+y))
  (C u v) * (C x y) = (C (u*x) (-v*y)) + (C (v*x) (u*y))
  (C u v) - (C x y) = (C (u+(-x)) (v+(-y)))
  negate
  abs       (C x y) = C (root (x*x + y*y)) 0
  signum    (C x y) = if (x==0 && y==0) then 0 else 1
  fromInteger    n  = C (fromInteger n) 0

非常感谢任何填写否定行的帮助。

1 个答案:

答案 0 :(得分:4)

我认为你这样做是为了学习,否则你只会use Data.Complex,对吗?

所以,不要只是给你答案,I shall answer your question by asking you another question

negate {-something-} = {-something-}

你能填写两件“东西”中的任何东西吗?如果你不能完全,公平地填充其中一个,但要清楚地知道要填写的剩余空隙在哪里。

顺便说一下,你对signum的定义是错误的。 (对于所有abs z * signum z = z,您应该z。)

相关问题