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)
的计算顺序为 f
、a
、b
、f(...)
、c
、d
、g(...)
,其中 g
是 f(...)
.
的结果
在 OCaml 中,函数应用程序的评估顺序是未指定的(也称为非确定性的)。
在标准机器学习中,它也是非确定性的还是确定性的?您能否提供对阐明的规范部分的参考?
编辑:对于那些后来的人,我还了解到,与 SML 一样,在 F# 中顺序是指定的和确定的——不像 OCaml,考虑到两者在语法上的接近程度,OCaml 更加疯狂。如果你经常在它们之间切换,很容易忘记。
是的,评估规则(Definition 的第 6.7 节)完全指定了所有 SML 构造的评估顺序,并且始终按文本顺序排列。对于应用程序,首先计算函数表达式,然后计算参数(例如规则 102)。类似地,记录(以及元组)从左到右计算(规则 92/95)。
一起,这意味着例如f(a,b)(c,d)
的计算顺序为 f
、a
、b
、f(...)
、c
、d
、g(...)
,其中 g
是 f(...)
.