$是具有最低可能优先级的infix运算符:
F$a=f a
这不意味着,在下面的表达中,
$2^2
应该先评估然后再加$ 2?看来2+2是第一个评估的。
Prelude> (2^) $2+2
返回:
16
发布于 2015-08-29 16:44:45
不是的。试着考虑优先级,而不是考虑什么是“先计算”,更多的是考虑插入括号的位置。
事实上,$具有最低的优先级,这意味着在它的右侧(如果需要的话,将括号分别插入到它的左边,但这里不需要它们)。所以
(2^) $2+2
等于
(2^) $ (2 + 2)
这当然是
(2^) 4(即16)
发布于 2015-08-29 16:43:19
优先规则可能会令人困惑,但我喜欢将其视为“较低优先级”的意思是“以后做”。因为$的优先级最低(例如,低于(+)),所以它是在(+)之后执行的。因此,(2^) $ 2 + 2将(2^)计算为部分应用的函数,然后计算2+2为4,然后将4应用于2^以获取16。
https://stackoverflow.com/questions/32288288
复制相似问题