rotate :: [a] -> Int -> [a] rotate xs c | c < 0 = rotate xs (c + (length xs)) | otherwise = (drop (c `mod` (length xs)) xs ) ++ (take (c `mod` (length xs)) xs) rotate' xs c = take (length xs) $ drop (length xs + c) $ cycle xs