SML 中的函数应用程序评估顺序是否确定?

Is function application evaluation order deterministic in SML?

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

在标准机器学习中,它也是非确定性的还是确定性的?您能否提供对阐明的规范部分的参考?


编辑:对于那些后来的人,我还了解到,与 SML 一样,在 F# 中顺序是指定的和确定的——不像 OCaml,考虑到两者在语法上的接近程度,OCaml 更加疯狂。如果你经常在它们之间切换,很容易忘记。

是的,评估规则(Definition 的第 6.7 节)完全指定了所有 SML 构造的评估顺序,并且始终按文本顺序排列。对于应用程序,首先计算函数表达式,然后计算参数(例如规则 102)。类似地,记录(以及元组)从左到右计算(规则 92/95)。

一起,这意味着例如f(a,b)(c,d) 的计算顺序为 fabf(...)cdg(...),其中 gf(...).

的结果