-- | Implementing 'cdr'.
-- Rules:
--   (cdr (a b c)) = (b c)
--   (cdr (a b)) = (b)
--   (cdr (a)) = NIL
--   (cdr (a b . c)) = (b . c)
--   (cdr (a . b)) = b
--   (cdr a) = error (not list)
--   (cdr a b) = error (too many args)
cdr :: [LispVal] -> ThrowsError LispVal
cdr [List (x : xs)] = return $ List xs
cdr :: [LispVal] -> ThrowsError LispVal
cdr [List (x : xs)] = return $ List xs
cdr [List (x : xs)] = return $ List xs