SML中的功能应用评估顺序是否具有确定性?

时间:2017-05-10 03:11:40

标签: sml ml

在OCaml中,函数应用程序的评估顺序未指定(也称为非确定性)。

在标准ML中,它是否也是非确定性的或确定性的?您能否提供澄清的规范部分的参考?

编辑:对于你们后来的人来说,我也学到了像SML一样,在F#中指定顺序和确定性 - 与OCaml不同,考虑到两者在语法上的接近程度,这更加疯狂。如果你在他们之间切换很容易忘记。

1 个答案:

答案 0 :(得分:8)

是的,评估规则(Definition的第6.7节)完全指定了所有SML结构的评估顺序,并且它始终采用文本顺序。对于应用程序,首先评估函数表达式,然后评估参数(例如规则102)。同样,记录(以及元组)从左到右进行评估(规则92/95)。

在一起,这意味着,例如我会按f(a,b)(c,d)fabf(...)c,{{1}的顺序对d进行评估其中g(...)g的结果。