反引号运算符的固定性?

Mat*_*ner 22 haskell operator-precedence operator-keyword

反引号运算符的固定性是什么?

例如,来自Real World Haskell的代码:

ghci> (1+) `fmap` [1,2,3] ++ [4,5,6]
[2,3,4,4,5,6]
Run Code Online (Sandbox Code Playgroud)

很明显,反引号操作符`fmap`具有更高的固定性++,但GHCi没有给出.

dav*_*420 22

Haskell报告的 §4.4.2 指出

任何缺乏固定性声明的运营商都被假定为第9条

"任何运算符"包括反引号中的正常函数名称.

您的示例显示`fmap`确实具有更高的固定性++,因为++对结果的行为fmap.

  • 值得一提的是,您可以为这些运营商指定固定性.例如,`1 + 2 \`const \`5 = 3`,但是`1 + 2 \`div \`5 = 1`. (4认同)
  • @Rotsor:你的例子不是一个例子,因为表达式'1 + 2 \`const \`5`的值将是3,即使`\`const \``的固定性类似于`\`div\``. (4认同)
  • 哦,我怎么能这样?那么`2 \`div \`1 ^ 2 = 2`和`2 \`const \`1 ^ 2 = 4`就是例子. (4认同)