L1 =[1,2,3,4,5]およびL2[4,5,6,7,8]の場合、発生する要素である[1,2,3,5,7,8]を返します。 1つのリストのみ。両方のリストにあるアイテムのリストを返す関数をすでに作成しました。
fun exists x nil = false | exists x (h::t) = (x = h) orelse (exists x t);
fun listAnd _ [] = []
| listAnd [] _ = []
| listAnd (x::xs) ys = if exists x ys then x::(listAnd xs ys)
else listAnd xs ys
私が探しているリストは、L1 @ L2-(ListAnd L1 L2)で指定する必要があります。また、要素を削除して重複を削除する関数も見つかりました。remDup関数を少し変更して、複数回発生したアイテムの痕跡が残らないようにすることを何度か試みました。動作させることができませんでした。これらすべての機能を使用して組み合わせて機能させる方法がわかりません。
fun delete A nil = nil
| delete A (B::R) = if (A=B) then (delete A R) else (B::(delete A R));
fun remDups nil = nil
| remDups (A::R) = (A::(remDups (delete A R)));