Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 帮助我理解lambda表达式的优先级_F#_Operator Precedence - Fatal编程技术网

F# 帮助我理解lambda表达式的优先级

F# 帮助我理解lambda表达式的优先级,f#,operator-precedence,F#,Operator Precedence,看着表格,我对lambda表达式在哪里适用于所有这些感到困惑。将表1到25的优先级从低到高依次编号,我看到了用于编写lambda表达式的两个关键标记:fun是非关联的6,而->是右关联的8。也就是说,有趣…->。。。。这可能是我理解的第一个错误,因为我甚至不确定优先级是否在->右侧的lambda表达式主体中起作用,我只能认为优先级在整个表达式中起作用,所以我将继续讨论。根据此表,序列运算符;,具有比fun运算符更低的优先级4。我相信这说明了 fun (x:int) -> x + 3 ; 2

看着表格,我对lambda表达式在哪里适用于所有这些感到困惑。将表1到25的优先级从低到高依次编号,我看到了用于编写lambda表达式的两个关键标记:fun是非关联的6,而->是右关联的8。也就是说,有趣…->。。。。这可能是我理解的第一个错误,因为我甚至不确定优先级是否在->右侧的lambda表达式主体中起作用,我只能认为优先级在整个表达式中起作用,所以我将继续讨论。根据此表,序列运算符;,具有比fun运算符更低的优先级4。我相信这说明了

fun (x:int) -> x + 3 ; 2;;
应该相当于

((fun (x:int) -> (x + 3)) ; 2);;
(fun (x:int) -> (x + 3 ; 2));;
但它实际上相当于

((fun (x:int) -> (x + 3)) ; 2);;
(fun (x:int) -> (x + 3 ; 2));;
我感谢任何帮助,澄清我对引用表给出的优先规则与lambda表达式的实际优先规则的解释!谢谢

MU

如果正在读取运算符优先级表,则已丢失。表可能有bug,但谁在乎呢,不要看表。并且不要使用序列运算符;。如果在lambda旁边使用了sequence操作符,那么将lambda放在括号中。或者把每个lambda放在括号里。我一直在触摸F解析器的代码,我不知道它的相对优先级是什么;对乐趣对->是,我甚至不知道->在表达式中有优先权意味着什么,只有在类型中,它才是正确的。。。我无法想象这个问题会有什么令人满意的答案或后续行动。除非您正在为F编写自己的解析器/编译器,否则您不应该对此感兴趣。这些不是您要寻找的Droid。

MU


如果正在读取运算符优先级表,则已丢失。表可能有bug,但谁在乎呢,不要看表。并且不要使用序列运算符;。如果在lambda旁边使用了sequence操作符,那么将lambda放在括号中。或者把每个lambda放在括号里。我一直在触摸F解析器的代码,我不知道它的相对优先级是什么;对乐趣对->是,我甚至不知道->在表达式中有优先权意味着什么,只有在类型中,它才是正确的。。。我无法想象这个问题会有什么令人满意的答案或后续行动。除非您正在为F编写自己的解析器/编译器,否则您应该对这些都不感兴趣。这些不是您正在寻找的Droid。

哈哈,我知道表格不好,规范也没有多大帮助!但我确实有一个很好的理由来使用序列运算符和深入理解优先规则;。看看F解析器会有帮助吗,或者对fslex/fsyacc不熟悉的人会完全不知所措吗?还有其他关于掌握优先规则的建议吗?谢谢还有,我不知道MU代表什么!正如您几乎猜到的,我对所有这些都感兴趣,因为我正在开发一个报价反编译器,作为一个更大的开源项目Unquote的一部分。缺乏一个完整的优先级规范正在拖我的后腿,这是我应该提交一个规范bug来使用的吗fsbugs@microsoft.com?哈哈,我就知道桌子不好,规格也没多大用处!但我确实有一个很好的理由来使用序列运算符和深入理解优先规则;。看看F解析器会有帮助吗,或者对fslex/fsyacc不熟悉的人会完全不知所措吗?还有其他关于掌握优先规则的建议吗?谢谢还有,我不知道MU代表什么!正如您几乎猜到的,我对所有这些都感兴趣,因为我正在开发一个报价反编译器,作为一个更大的开源项目Unquote的一部分。缺乏一个完整的优先级规范正在拖我的后腿,这是我应该提交一个规范bug来使用的吗fsbugs@microsoft.com?