これが私の質問です: リストと 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 に等しい要素にヒットしたら停止する必要がありますが、残りのリストは保持され、ブール値を返すことができることに注意してください。実行時間が重要です。