Perl Christmas Quiz

Hakim Cassimally hakim.cassimally at
Mon Dec 15 19:32:57 GMT 2008

On 15/12/2008, Robin Barker <Robin.Barker at> wrote:
>  My haskell solution:
>  import List (delete)
>  intersection :: Eq a => [a] -> [a] -> [a]
>  intersection [] _ = []
>  intersection (x:xs) ys = if elem x ys then x: (intersection xs (delete x ys))
>                                                         else intersection xs ys

Nice!  And instead of explicit recursion we can tweak to a fold with
an accumulator that contains a pair containing the ys still left and
the result so far:

intersection xs ys = snd $ foldr aux (ys, []) xs
        where aux x acc@(ys, r) = if x `elem` ys then (delete x ys,
x:r) else acc


More information about the mailing list