【发布时间】:2011-02-01 05:11:27
【问题描述】:
查看Operator Precedence 表,我很困惑 lambda 表达式在哪里适合所有这些。将表编号为 1 到 25(从最低到最高优先级),我看到用于组成 lambda 表达式的两个关键标记:fun 是非关联 6,-> 是右关联 8。即,fun ... -> ... .这可能是我理解的第一个错误,因为我什至不确定优先级是否在 lambda 表达式的主体中起作用(-> 的右侧)我只能认为优先级在整个表达,所以我将继续前进。根据该表,序列运算符; 的优先级为4,低于fun“运算符”。我相信是这样说的
fun (x:int) -> x + 3 ; 2;;
应该等价于
((fun (x:int) -> (x + 3)) ; 2);;
然而它实际上等价于
(fun (x:int) -> (x + 3 ; 2));;
感谢任何帮助澄清我对引用表给出的优先规则与 lambda 表达式的实际优先规则的解释!谢谢!
【问题讨论】: