我在寻找函数for : int * int * (int -> unit) -> unit
。我需要这个打印一个数字列表。更具体地说,我有一个功能f num = print ((Int.toString num)^"\n")
。到目前为止,我有这个:单元类型的整数列表
fun for(from,to,f)=
if from=to then [f(to)]
else f(from)::for(from+1,to,f)
这给我一个unit list
返回类型。如何在不追加早期结果的情况下调用函数?
使用带聚合器的内部函数? – Ashalynd
我试过了。您仍然将f应用于每个数字,并且您仍然追加到较早的结果,从而给出单位列表类型。或者,你的意思是别的吗? – Krishna
我的意思是这样的:(我不是sml中的pro,但它在所有func langs中的工作方式相同):'fun forinner(from,to,f,acc)= 如果from =然后acc else forinner (from + 1,to,f,f(from):: acc)' – Ashalynd