1
這是我的任務。尾遞歸和迭代SML
我一直工作在這其中一個導師,這是我們想出了這麼遠。這
fun mult(a,b) =
let
val product = 0
in
if (a = 0) then
0
else
while a > 0 do
(
product := product + b;
if (a = 1) then
product
else
a:= a -1
);
end;
; //the function did not run at end;, so we added these two semicolons below
;
輸出是:
stdIn:102.11-103.6 Error: syntax error: deleting SEMICOLON END SEMICOLON
我只被引入到SML在過去的2周,我不能讓我的頭周圍。很感謝任何形式的幫助。
練習對我來說沒什麼意義 - 它對於非遞歸while循環版本來說意味着什麼,在任何意義上都等價於尾遞歸方法?在任何情況下 - 由於int變量不可變,'product:= product + b'在SML中是沒有意義的。類似的東西需要一個'int ref'。你研究過這些嗎? –