Я использую OCaml для записи функции, которая принимает список int и int-элемента и возвращает список пар, где первый элемент каждой пары является элементом int и второй элемент пары является членом из списка. Например, допустим, у меня есть номер 1 и список [10; 20; 30] в качестве входных данных. Мне нравится функция для возврата [(1, 10); (1, 20); (1, 30)]. Я написал следующую функцию:сопряжение int со списком int в OCaml
let rec f (lst : int list) (elm : int) : (int*int) list =
match lst with
| [] -> failwith "empty list"
| [x] -> [(x, elm)];;
Я получаю следующее сообщение об ошибке:
Characters 59-120:
Warning 8: this pattern-matching is not exhaustive.
Here is an example of a value that is not matched:
_::_::_ val f : int list -> int -> (int * int) list = <fun>
Что мне не хватает?
Спасибо, как я могу получить элементы в списке, который имеет более чем один элемент? Я знаю, что есть что-то вроде h :: t, но мне не удалось его использовать. – user1787222
@ user1787222 Вы можете получить только элемент заголовка списка за один раз. Чтобы получить все элементы, вам нужно использовать рекурсию и каждый раз, когда вы получаете голову. –
@ user1787222 Я обновил свой ответ. Если вы считаете, что это хорошо, отметьте мой ответ правильно –