【发布时间】:2011-07-10 03:40:31
【问题描述】:
我相信我在将我的第一个函数转换为仅使用分配和循环方面走在正确的轨道上。我知道这违反函数式编程,但这是教授想要的。
递归函数:
fun sub (x, y, []) = []
| sub (x, y, z::zz) = if x = z then y::sub(x, y, zz)
else z::sub(x, y, zz);
迭代翻译:
fun sub2 (x, y, z) =
let val ret = ref []; val temp = z;
in
while !temp <> []
do (if x = hd(!temp) then ret := !ret::y; temp := tl(!temp)
else ret := ret::hd(!temp); temp := tl(!temp));
!ret;
end;
我收到以下在 smlnj 上运行的错误。第一个在do的行,第二个在最后。
错误:语法错误:将 END 替换为 EQUALOP
错误:在 EOF 发现语法错误
我会很感激帮助调试或者可能是一种更简洁的方式来完成这个迭代功能。
【问题讨论】: