为什么"(`减去`)1 2"失败?

时间:2014-08-07 02:33:08

标签: haskell

如果反向标记将前缀函数更改为中缀,并且括号将中缀函数更改为前缀,则:

语法,为什么(`subtract`) 1 2会失败?

2 个答案:

答案 0 :(得分:18)

虽然"反引号将前缀转换为中缀,括号将中缀转换为前缀"是一种方便的心理快捷方式,它不是Haskell语法的精确描述。为此,你应该转向Report,这清楚地表明可以进入反引号(或括号)内部的东西是非常有限的。反引号中唯一允许的是简单标识符,同样对于使中缀成为前缀的括号类型。

答案 1 :(得分:6)

反引号是“只是语法”。这是一种说他们是黑客的方式。 Haskell的设计者选择只给出一个简单的技巧作为语法糖,而不是试图构建它们到处都是一致的机制。

可悲的是,没有一个更有趣的答案。