我想输入两个长度相等的列表,并将一个列表的值分配给另一个列表的变量。
我希望它自动将第一个列表作为变量列表实现,其次作为值实现。
例如
我想将[1,2,3,4,5,6]
值分配给变量列表[9,10,11,12,13,14]
中的元素,即
1为值9,列表中值为10。
exception error
fun assign([],_) = raise error
| assign(_,[]) = raise error
| assign(l::ls,b::ls) = (val l=b ; assign(ls,bs));
我知道几乎没有问题。首先,函数应该返回值吗?有关我如何处理的任何建议?我的意思是创建一个有意义的函数,根据需要分配值。
答案 0 :(得分:1)
分配值对不可变类型没有意义。我假设你想这样做:
有一个int
[1,2,3,4,5,6]
列表和一个int references列表,这些列表使用默认值[ref 0, ref 0, ref 0, ref 0, ref 0, ref 0]
初始化。您想更新对[ref 1, ref 2, ref 3, ref 4, ref 5, ref 6]
。
您只需要对您的功能进行一些小修改:
fun assign([], []) = ()
| assign(_, []) = raise error
| assign(_, []) = raise error
| assign(l::ls, r::rs)= (r := l ; assign(ls, rs))
该函数返回unit
并在调用assign
后,引用列表包含新值。
但是,对于具有破坏性更新的这些方案,最好使用array of values。