F # заменить первый элемент в списке? - PullRequest
1 голос
/ 03 июня 2011

Эй, я пытаюсь изучить основы f # и спотыкаюсь.Мне интересно, как бы вы могли "заменить" первый элемент в списке.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

4 голосов
/ 03 июня 2011

Вот функция общего назначения. Он заменит заголовок списка новым значением, если список не пустой, иначе он вернет список из одного элемента со значением замены.

let replaceHead newHead list = 
  match list with
  | _ :: tail -> newHead :: tail
  | [] -> [newHead]
1 голос
/ 03 июня 2011

Вы можете 'cons' (используя :: -оператор) новый первый элемент в хвосте (List.tail) исходного списка:

let theList = [1; 2; 3; 4]
let firstReplaced = 0 :: (List.tail a)

Обратите внимание, что это оставит оригиналсписок (theList) нетронутым.

...