0
有類似foo(bar1(), bar2())
的東西,我可以肯定,在SML中,它總會首先評估bar1()
,然後是bar2()
?函數內參數的評估順序是什麼?
有類似foo(bar1(), bar2())
的東西,我可以肯定,在SML中,它總會首先評估bar1()
,然後是bar2()
?函數內參數的評估順序是什麼?
是的。嚴格地說,你有一個適用於元組的函數。元組的字段從左到右進行評估,所以bar1()將在bar2()之前被評估。見米爾納,托夫特,哈珀和麥奎第41頁。
注「ML標準(修訂)」的定義,如果FOO實際上是可能有副作用或拋出一個異常將被計算的表達式在其論點之前,因此在之前bar1()或bar2()。這對咖喱應用程序尤其有意義。
foo (bar1()) (bar2())
將評估第一BAR1()然後富(bar1value)評估BAR2()之前。