allDifferent''' xs = fst (foldr (
                             \v ->
                               \(b,ys) -> if b
                               then if elem v ys
                                 then (False,[])
                                 else (True,v:ys)
                               else (False,[])
                             )(True,[]) xs)
allDifferent''' xs = fst (foldr (
                             \v ->
                               \(b,ys) -> if b
                               then if elem v ys
                                 then (False,[])
                                 else (True,v:ys)
                               else (False,[])
                             )(True,[]) xs)
allDifferent''' xs = fst (foldr (
                             \v ->
                               \(b,ys) -> if b
                               then if elem v ys
                                 then (False,[])
                                 else (True,v:ys)
                               else (False,[])
                             )(True,[]) xs)