【发布时间】:2016-12-24 01:30:57
【问题描述】:
假设我必须在每次调用函数时更新一个列表,以便保留列表的前一个元素。
这是我的尝试:
local
val all_list = [];
in
fun insert (x:int) : string = int2string (list_len( ((all_list@[x])) ) )
end;
问题是每次调用insert,都得到输出“1”,表示列表再次初始化到[]。
但是,我希望第一次调用 insert 时输出 "1",第二次调用时输出 "2",等等。
我无法提供解决方法。应该怎么做?
【问题讨论】:
-
在函数式编程中,用相同的输入重复调用一个函数会重复给出相同的结果。为什么你会期待其他情况?
-
您永远不会更新变量(而且您不能!)。您只是在创建一个新列表,然后您确定其长度。
-
我可以推荐阅读 R. Harper 的 Programming in Standard ML。一本好书!
标签: functional-programming sml smlnj