Почему нет List.skip и List.take? Конечно, есть Seq.take и Seq.skip, но в результате они не создают списки.
Одно из возможных решений: mylist |> Seq.skip N |> Seq.toList
Но это создает сначала перечислитель, а затем новый список из этого перечислителя. Я думаю, что может быть более прямой способ создать неизменный список из неизменного списка. Поскольку внутреннее копирование элементов отсутствует, есть только ссылки из нового списка на исходный.
Другое возможное решение (без исключений):
let rec listSkip n xs =
match (n, xs) with
| 0, _ -> xs
| _, [] -> []
| n, _::xs -> listSkip (n-1) xs
Но это все равно не ответит на вопрос ...