···1414 | SeqRight { p; q; loc } ->
1515 let p' = optimise p in
1616 let q' = optimise q in
1717+ let p' = match p' with
1818+ | Many { p = inner; loc = l } -> SkipMany { loc = l; p = inner }
1919+ | Some_ { p = inner; loc = l } -> SkipSome { loc = l; p = inner }
2020+ | _ -> p'
2121+ in
1722 (match p' with
1823 | Pure _ -> q'
1924 | _ -> SeqRight { loc; p = p'; q = q' })
···2126 | SeqLeft { p; q; loc } ->
2227 let p' = optimise p in
2328 let q' = optimise q in
2929+ let q' = match q' with
3030+ | Many { p = inner; loc = l } -> SkipMany { loc = l; p = inner }
3131+ | Some_ { p = inner; loc = l } -> SkipSome { loc = l; p = inner }
3232+ | _ -> q'
3333+ in
2434 (match q' with
2535 | Pure _ -> p'
2636 | _ -> SeqLeft { loc; p = p'; q = q' })