Я пытаюсь написать метод, который разбивает список на два. Функция должна возвращать кортеж из двух списков, а аргументы, которые выполняет функция, - это количество элементов в первом списке, а затем список. Вот что я имею в видуРазбиение списка F Sharp
список [1,2,3,4]
сплит (1, список) -> ([1], [2,3,4]) сплит (3, список) -> ([1,2,3], [4])
Вот что я до сих пор:
let rec mysplit = function
|(n,[])->([],[])
|(1,x::xs)->(x::[],xs)
|(n,x::xs)-> mysplit(n-1,xs)
Я точно не знаю, как "поймать" кортеж обратно из рекурсивный вызов. Не уверен, где можно добавить дополнительную инструкцию let, чтобы временно сохранить список, который я собираю. Новым для языка, поэтому было бы полезно изучить несколько разных подходов.
Теперь вот что я называю f # – James