update cs (Reverse a b) =
  let (h, t) = S.splitAt (b + 1) cs
      (h', m) = S.splitAt a h
  in h' >< (S.reverse m) >< t
update cs (Reverse a b) =
  let (h, t) = S.splitAt (b + 1) cs
      (h', m) = S.splitAt a h
  in h' >< (S.reverse m) >< t
update cs (Reverse a b) =
  let (h, t) = S.splitAt (b + 1) cs
      (h', m) = S.splitAt a h
  in h' >< (S.reverse m) >< t