haskell中的参数命名规则

t0m*_*ma5 5 variables haskell arguments naming-conventions

出于什么原因,不允许具有相同名称的参数在同一个等式中出现多次?例子:

f a a = show a

d && d = d
_ && _ = False
Run Code Online (Sandbox Code Playgroud)

从技术上讲,形式参数(报告称这些变量.)也是模式 - 只是它们永远不会匹配一个值.作为成功匹配的"副作用",形式参数与其匹配的值绑定.由于这个原因,任何一个方程中的模式都不允许出现多次相同的形式参数(称为线性§3.17,§3.3,§4.4.3).

Dan*_*ner 13

根据这个邮件列表帖子,这是米兰达允许的,并且是一个常见的错误来源:人们会以同样的方式将两个变量命名为偶然并且难以发现这样一个微妙的错误.所以Haskell不允许它明确添加警卫.

我个人认为这对你的代码的不良读者来说也更加温和,因为这个规则的结果不需要记住在模式匹配的站点范围内的所有不同变量,以查看模式是否真的匹配一切与否.