-- | Implementing 'car'.
-- Rules:
--   (car (a b c)) = a
--   (car (a)) = a
--   (car (a b . c)) = a
--   (car a) = error (not a list)
--   (car a b) = error (car takes only one argument)
car :: [LispVal] -> ThrowsError LispVal
car [List (x : xs)] = return x
car :: [LispVal] -> ThrowsError LispVal
car [List (x : xs)] = return x
car [List (x : xs)] = return x