Мне интересно, как я могу написать функцию, которая делит заданный список на подсписки в заданной точке, меняет местами эти подсписки и возвращает результирующий список.
Например:
swap([1;3;5;6],2) => [5;6;1;3]
Полагаю, что разработанный мной код верен?
let rec swap (l,n) =
let rec loop t (count,laux) =
match t with
| h::t when count < n -> loop t (count+1, h::laux)
| h::t -> h::t@ List.rev laux
| []->[]
in
loop l (0,[])
;;