繁体   English   中英

纯脚本。 参数列表长度在声明中不同

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM