Haskell 错误:表达式为‘;det&x2019;有不同数量的论点
我试图计算行列式,我有Haskell 错误:表达式为‘;det&x2019;有不同数量的论点,haskell,Haskell,我试图计算行列式,我有det函数定义如下: det :: (Double,Double) -> (Double,Double) -> Double det _ = 0.0 det [] = error "its Empty!" det [x] = error "contains only one point!" det (x1, y1) (x2, y2) = (x1*y2 + x2*y1) 我得到以下错误 Equations for ‘det’ have different num
det
函数定义如下:
det :: (Double,Double) -> (Double,Double) -> Double
det _ = 0.0
det [] = error "its Empty!"
det [x] = error "contains only one point!"
det (x1, y1) (x2, y2) = (x1*y2 + x2*y1)
我得到以下错误
Equations for ‘det’ have different numbers of arguments
PolygonArea.hs:11:1-11
PolygonArea.hs:14:1-39
Failed, modules loaded: none.
首先,类型
(Double,Double)
始终是两个Double
s的一对,而不是空列表或单例列表。其次,正如错误消息所说,您的det
案例需要具有相同数量的参数,但前三个案例给出了一个参数,第四个案例给出了两个参数
修好所有这些,你会得到
det :: (Double, Double) -> (Double, Double) -> Double
det (x1, y1) (x2, y2) = (x1 * y2 + x2 * y1)
首先,类型
(Double,Double)
始终是两个Double
s的一对,而不是空列表或单例列表。其次,正如错误消息所说,您的det
案例需要具有相同数量的参数,但前三个案例给出了一个参数,第四个案例给出了两个参数
修好所有这些,你会得到
det :: (Double, Double) -> (Double, Double) -> Double
det (x1, y1) (x2, y2) = (x1 * y2 + x2 * y1)
好的,我知道你们在说什么,但你们如何检查列表是否为空,或者它只包含一个点?根本并没有列表!您已经定义了函数,因此它只能接收两对数字。好的,我明白您的意思,但如何检查列表是空的,还是只包含一个点?根本没有列表!您已经定义了函数,因此它只能接收两对数字。