let (|Array|_|) l a = let rec loop i = function | h :: tail when h = Array.get a i -> loop (i+1) tail | [] -> a |> Seq.skip i |> Seq.toArray |> Some | _ -> None loop 0 l match [| 1;2;3;4;5;6 |] with | Array [ 1;2] tail -> tail | _ -> [||]