rotate :: [a] -> Int -> [a]
rotate p q =
  let
    (r, s) = split p (mod q (length p))
  in
    s ++ r
rotate :: [a] -> Int -> [a]
rotate p q =
  let
    (r, s) = split p (mod q (length p))
  in
    s ++ r
rotate p q =
  let
    (r, s) = split p (mod q (length p))
  in
    s ++ r