Jump to content

Set consolidation: Difference between revisions

(J: simplify)
Line 266:
=={{header|Ela}}==
This solution emulate sets using linked lists:
<lang ela>open Corelist
 
let merge [] ys = ys
merge (x::xs) ys | x `elem` ys = merge xs ys
| else = merge xs (x::ys)
 
let consolidate (_::[])@xs = xs
consolidate (x::xs) = conso [x] (consolidate xs)
where conso xs [] = xs
conso (x::xs)@r (y::ys) | intersect x y <> [] = conso ((merge x y)::xs) ys
| else = conso (r ++ [y]) ys</lang>
Usage:
 
In this example sets are filled with variants (somewhat similar to atoms in Lisp). One can use any other values (such as strings or chars) as well.
<lang ela>open Consoleconsole
 
consolidate [[H,I,K], [A,B], [C,D], [D,B], [F,G,H]] |> writen $
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.