List (l+v)::…(列表+整数::(cons操作数)…)在SML中是什么意思?

List (l+v)::…(列表+整数::(cons操作数)…)在SML中是什么意思?,list,sml,smlnj,List,Sml,Smlnj,这是我幻灯片中的SML函数。我不明白l+v怎么能在这里工作。 但实际上它是有效的: - 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,

这是我幻灯片中的SML函数。我不明白l+v怎么能在这里工作。 但实际上它是有效的:

- 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
我想是这样的:

addto ([1,2,3],2);
val it = [3,4,5] : int list
现在它实际上是l nill,所以它返回addto[3],2; 但是hdl+v::添加到tll,v;不管怎么说,我是认真的; 我认为cons操作符::必须定义如下: :: 这里我的伪名实际上是整数,在addto[1,2,3],2的例子中。 但在我的函数中,我们有一个短语l+v:。。l是一个列表,v是一个整数,那么什么是l+v呢

p、 s我是一个完全的初学者,所以请原谅我,如果它太简单了,

First::被定义为:

   addto([1,2,3],2);  
   addto([2,3], 2);  
   addto([3], 2);   
   addto([],2)
例如,1::[2,3]是列表[1,2,3]

然后在代码中,表达式被解释为:

datatype 'a list = nil | :: of 'a * 'a list
因此,基本上,您的函数可以重写如下:

有趣的节目= 如果为null l,则为nil*如果l为空,则结果为空列表* 否则让 val head=hd l*取列表l的第一个元素* val sum=水头+v*然后将其与v相加* val result_tail=addto tl l,v*并为我列表尾部的所有x计算x+v* 在里面 sum::result_tail*结果是我刚刚计算的和,后跟递归调用给我的结果* 终止 最后,请注意,在大多数情况下,您不需要null或head之类的函数,因为我们使用模式匹配构造编写函数。这大大提高了可读性,而且通常情况下,它抑制了对此类函数的需求。例如,addto可以更简单地重写为:

乐趣添加到[],[] |addto x::tl,v=x+v::addto tl,v 更简单,不是吗?

第一个::定义为:

   addto([1,2,3],2);  
   addto([2,3], 2);  
   addto([3], 2);   
   addto([],2)
例如,1::[2,3]是列表[1,2,3]

然后在代码中,表达式被解释为:

datatype 'a list = nil | :: of 'a * 'a list
因此,基本上,您的函数可以重写如下:

有趣的节目= 如果为null l,则为nil*如果l为空,则结果为空列表* 否则让 val head=hd l*取列表l的第一个元素* val sum=水头+v*然后将其与v相加* val result_tail=addto tl l,v*并为我列表尾部的所有x计算x+v* 在里面 sum::result_tail*结果是我刚刚计算的和,后跟递归调用给我的结果* 终止 最后,请注意,在大多数情况下,您不需要null或head之类的函数,因为我们使用模式匹配构造编写函数。这大大提高了可读性,而且通常情况下,它抑制了对此类函数的需求。例如,addto可以更简单地重写为:

乐趣添加到[],[] |addto x::tl,v=x+v::addto tl,v
很简单,不是吗?

非常感谢!这就是l+v代表取其头部并将其与v相加,所以两个整数。。我还有很长的路要走才能写出你写的最后一个函数。。这是我第一次接触sml!非常感谢,非常感谢!这就是l+v代表取其头部并将其与v相加,所以两个整数。。我还有很长的路要走才能写出你写的最后一个函数。。这是我第一次接触sml!多谢各位