为什么Haskell中mod、elem这类函数两侧要加引号样式的符号?
Haskell反引号语法解答
你看到的包裹mod、elem的符号是反引号(`),属于Haskell的官方语法糖,作用是将双参数的前缀函数转换为中缀运算符使用,本身不改变函数的功能。
具体规则说明
- Haskell中的函数默认是前缀调用形式,你给出的两个例子对应的原生前缀写法如下:
-- 原中缀写法 c `elem` ['A'..'Z'] 等价于: elem c ['A'..'Z'] -- 原中缀写法 x `mod` 7 等价于: mod x 7 - 反引号转换中缀的写法仅适用于恰好有2个参数的函数,参数数量不符的函数无法使用该语法。
- 设计该语法的核心目的是提升代码可读性:运算、判断类的双参数函数用中缀形式书写,更符合大众的阅读和表达习惯,比如
xmod7 == 3读起来就是“x对7取模的结果等于3”,比前缀写法(==) (mod x 7) 3直观很多。
补充小技巧
本身是中缀的运算符也可以用括号包裹转成前缀调用,和反引号的功能刚好相反,比如:
-- 中缀写法 2 + 3 等价于前缀写法: (+) 2 3
内容的提问来源于stack exchange,提问作者ZireaeltheSwallow
相关产品推荐
相关产品推荐

