20 lines
547 B
Plaintext
20 lines
547 B
Plaintext
main :: [sys_message]
|
|
main = [Stdout (show (symdiff a b) ++ "\n")]
|
|
where a = ["John", "Serena", "Bob", "Mary", "Serena"]
|
|
b = ["Jim", "Mary", "John", "Jim", "Bob"]
|
|
|
|
symdiff :: [*]->[*]->[*]
|
|
symdiff a b = (a' -- b') ++ (b' -- a')
|
|
where a' = nub a
|
|
b' = nub b
|
|
|
|
nub :: [*]->[*]
|
|
nub = f []
|
|
where f acc [] = acc
|
|
f acc (a:as) = f acc as, if a $in acc
|
|
= f (a:acc) as, otherwise
|
|
|
|
in :: *->[*]->bool
|
|
in i [] = False
|
|
in i (a:as) = a == i \/ i $in as
|