所以这是我的问题:我想创建一个接受一个列表和 int 的函数,然后它递归地在列表中移动,如果它在列表中找到一个等于 int 的元素,那么它应该返回整个列表元素被移除,一个布尔值表示是否移除了某些东西。这是我到目前为止得到的:
fun foo ([], n) = ([],false)
| foo ((x::xs), n) = if x = n
then (xs,true)
else ([x] @ foo(xs,n),false);
我的想法是使函数 cons 成为元组中所需的元素,如下所示:
([x0] @ [x1] @ [x2] @ [xs], true)
那么有什么办法可以实现这个功能吗?请记住,一旦遇到等于 n 的元素,它就必须停止,但仍保留列表的其余部分,并能够返回布尔值。运行时间是关键。