Напишите функцию, которая удаляет i -й элемент списка. Если длина списка меньше i , верните список.
Требуется вывод:
- deleteIth([1,2,3,4,5,6],3);
val it = [1,2,4,5,6] : int list
- deleteIth([1,2,3,4,5,6],7);
val it = [1,2,3,4,5,6] : int list
Вот мой код:
fun deleteIth (L, i) =
let
(* Deletes the element of a list at ith index *)
fun delete (nil, i, position) = nil
| delete (x::xs, i, position) = if i = position then xs else
x :: delete (xs, i, position + 1)
in
if i >= 0 andalso i < length L then delete (L, i, 0) else L
end;
примечание: строка x :: delete (xs, I, position + 1) должна быть сразу после остатка в предыдущей строке, когда перенос строки заставил меня показать код таким образом. Простите за это.
Но мой код выводит
- deleteIth([1,2,3,4,5,6],3);
val it = [1,2,3,5,6] : int list
- deleteIth([1,2,3,4,5,6],7);
val it = [1,2,3,4,5,6] : int list
Буду признателен за помощь, спасибо.