allDifferent' (x:xs) = inner [x] xs where
  inner :: Eq a => [a] -> [a] -> Bool
  inner _ [] = True
  inner presentValues (x:xs)
    | elem x presentValues = False
    | otherwise = inner (x:presentValues) xs
allDifferent' (x:xs) = inner [x] xs where
  inner :: Eq a => [a] -> [a] -> Bool
  inner _ [] = True
  inner presentValues (x:xs)
    | elem x presentValues = False
    | otherwise = inner (x:presentValues) xs
allDifferent' (x:xs) = inner [x] xs where
  inner :: Eq a => [a] -> [a] -> Bool
  inner _ [] = True
  inner presentValues (x:xs)
    | elem x presentValues = False
    | otherwise = inner (x:presentValues) xs