【发布时间】:2014-12-22 05:54:00
【问题描述】:
对于这个看似简单的 SML 问题,我似乎找不到简单的答案。我有代码:
fun inde(x, y, L) = if null L then nil else
if x=hd(L) then y+1::inde(x,y+1,tl L) else
inde(x,y+1,tl L);
我希望 y 是函数外部的变量,所以它会是 inde(x,L) 但 y 仍然可以正确计数。当我在函数外部声明它(为0)时,当函数被递归调用时,它会重置为0。
如果您要运行这个当前函数,它会生成一个列表,其中列出了 x 在列表 (L) 中的位置。 所以 inde(1,0,[1,2,2,1,1]) 会产生 [1,4,5]
【问题讨论】:
-
标准 ML 中的变量是实际的数学变量,其含义是通过替换给出的,而不是通过一系列重新分配。 Source。这样做的直接后果是您无法修改变量在给定上下文中代表的值。
标签: function variables helper sml ml