【发布时间】:2021-06-04 09:30:47
【问题描述】:
- fun addto (l,v) =
= if null l then nil
= else hd l + v :: addto (tl l,v);
val addto = fn : int list * int -> int list
addto ([1,2,3],2);
val it = [3,4,5] : int list
- addto ([1,2,3],~2);
val it = [~1,0,1] : int list
这是我幻灯片中的 SML 函数。我不明白 (l+v) 如何在这里工作。 但它确实有效:
addto ([1,2,3],2);
val it = [3,4,5] : int list
我认为它是这样的:
addto([1,2,3],2);
addto([2,3], 2);
addto([3], 2);
addto([],2)
现在它实际上是 l nill 所以它返回到 addto([3], 2);
但是hd l + v :: addto (tl l,v); 到底是什么意思?
我认为“缺点”运算符:: 必须定义为:
在这里,我的伪名称
但是在我的函数中,我们有短语 (l+v :: ..) 而 l 是一个列表,v 是一个 int 那么l+v 是什么?
p.s 我是个初学者,如果太简单了请见谅
【问题讨论】: