[英]PureScript. Argument list lengths differ in declaration
import Prelude
data Line = Front | Middle | Back
derive instance eqLine :: Eq Line
instance ordLine :: Ord Line where
compare a b | a == b = EQ
compare Front _ = LT
compare Back _ = GT
compare = flip compare
为什么这会给我错误“声明比较中的参数列表长度不同”。 但是如果我将最后一行更改为
compare a b = flip compare a b
然后它编译。
我认为flip compare
返回 2 个参数的 function 因此匹配compare
的签名,但显然它没有。
回复:
> :type flip compare
forall (t4 :: Type). Ord t4 => t4 -> t4 -> Ordering
这只是语法要求。 如果您为 function 提供多个方程,它们都必须具有相同数量的 arguments。 语法上,而不是逻辑上。
这是减少混淆的措施。 只是为了让几个月后阅读您的程序的人可以更清楚地看到正在发生的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.