Function 函数中参数的求值顺序是什么?

Function 函数中参数的求值顺序是什么?,function,sml,Function,Sml,有类似于foo(bar1(),bar2())的东西,我可以在SML中确保它总是在bar1()之前和之后计算bar2() 是的。严格地说,您有一个应用于元组的函数。元组的字段是从左到右求值的,因此bar1()将在bar2()之前求值。见Milner、Tofte、Harper和MacQueen的“标准毫升的定义(修订)”第41页 请注意,如果foo实际上是一个可能有副作用或引发异常的表达式,那么它将在其参数之前进行计算,因此在bar1()或bar2()之前进行计算。这对curry应用程序尤其有影响

有类似于
foo(bar1(),bar2())
的东西,我可以在SML中确保它总是在
bar1()
之前和之后计算
bar2()

是的。严格地说,您有一个应用于元组的函数。元组的字段是从左到右求值的,因此bar1()将在bar2()之前求值。见Milner、Tofte、Harper和MacQueen的“标准毫升的定义(修订)”第41页

请注意,如果foo实际上是一个可能有副作用或引发异常的表达式,那么它将在其参数之前进行计算,因此在bar1()或bar2()之前进行计算。这对curry应用程序尤其有影响

foo (bar1()) (bar2())
将首先计算bar1(),然后计算foo(bar1value),然后再计算bar2()