我有这个代码:
data SafeValue a = SafeValue a a a deriving Eq
class Safe a where
check::a->Bool
(+++)::a->a->a
instance (Num a, Eq a) => Safe (SafeValue a) where
check (SafeValue x y z) | x == y = True
| x == z = True
| y == z = True
| otherwise = False
(SafeValue a b c)+++(SafeValue x y z) = let new_val = SafeValue (a+x) (b+y) (c+z)
in if check new_val then new_val
else error "Error"
我想添加class Safe
一个功能,例如:
make_new 3 --> SafeValue 3 3 3
我不知道如何添加它,因为小费应该是这样的:
make_new::b->a
但在istance
声明中ghci
声称它不确定是什么b
。
有人可以帮忙吗?