是否可以在SML中向前移动列表中的元素,让我们说两个步骤,以便[1,2,3,4,5,6]
中的3最终像[1,2,4,5,3,6]
一样?
答案 0 :(得分:0)
基本上,您需要定义一个有用的函数,该函数返回您想要更改的元素的确切位置。在这里你将有这样的东西,假设你在列表中只有一个3。如果你想向前移动所有3个,只需将curr(位置)设为一个列表:
exception DoesntExit
fun look3 (li, curr) = if (hd(li) == 3) then curr else look3 (tl(li), curr + 1)
| look3 (nil, curr) = raise DoesntExit
现在你有了你要前进的3的确切位置curr,你需要做的就是使用List.take()和List.drop()的组合,这对于你想要的输出是微不足道的。< / p>
此方法不限于您要更改的元素,列表长度和列表类型。