Я пытаюсь изучить F #, и я пытаюсь создать некоторые простые функции как часть этого обучения.Перемещение списка, а затем добавление нового элемента
Я создал функцию, которая добавляет элемент в список, а затем меняет результат. Это работает очень хорошо в интерактивном окне F # в Visual Studio
let addThenReverse n list =
match list with
| [] -> []
| _ -> n::list |> List.rev
addThenReverse 0 [1;2;3] //results in [3; 2; 1; 0]
Но у меня возникают трудности с написанием функции, которая бы полностью изменить список затем добавить элемент к нему.
let reverseThenAdd n list =
match list with
| [] -> []
| _ -> List.rev list |> n::list
reverseThenAdd 9 [1;2;3] //desired result [3; 2; 1; 9]
РЕДАКТИРОВАТЬ Желаемый результат для вышеизложенного должно быть [9; 3; 2; 1]. Хорошо сделано тем, кто это заметил!
Эта вторая функция не компилируется, и я получаю предупреждение «Это выражение, как ожидается, иметь тип» список -> «список б, но здесь имеет тип„списка с“
Любые варианты я стараюсь, кажется, результат другие ошибки компиляции. Я предполагаю (но не знаю, как), что мне нужно использовать новый список, созданный в результате «List.rev list», возможно, назначив его переменной.
Несомненно, результат 'addThenReverse 0 []' должен быть '[0]'? –
@RobLyndon Я отправился с более грандиозными планами, чем просто поворот списка и добавление нового предмета, но поскольку это становилось все труднее, мне пришлось обуздать энтузиазм и снизить мои взгляды. Вот почему логика с пустым списком выглядит немного странно. Большое спасибо за ваш ответ и комментарий! –