2016-05-07 1 views
2

Я новичок в OCaml и вам нужна простая функция для замены элемента в списке.Функция OCaml: заменить элемент в списке

Через некоторое время я должен был выполнить эту работу, но мне не нужен этот аргумент count в функции.

let rec replaceelem ls x elem count= 
    match ls with 
    | [] -> ls 
    | h::t -> if (count = x) then 
      elem::(replaceelem t x elem (count+1)) 
     else 
      h::(replaceelem t x elem (count+1)) 

Пример

# let a = [1;2;3;4;5];; 
val a : int list = [1; 2; 3; 4; 5] 
# replaceelem a 3 99 0;; 
- : int list = [1; 2; 3; 99; 5] 
+1

Оберните replaceelem FUNC с другой функцией, которые принимают только новый elem и старый список, и вызывать вашу рекурсивную версию из этой функции. –

ответ

1

Использование List.mapi - который обеспечивает индекс элемента, идя по списку -

let replace l pos a = List.mapi (fun i x -> if i = pos then a else x) l;; 
+0

Спасибо, используя это прямо сейчас. –

 Смежные вопросы

  • Нет связанных вопросов^_^