Вы просматриваете списки путем сопоставления с образцом, что выполняется с помощью выражения match ... with
.
Например:
f l =
match l with
| head :: tail -> "This list has at least one element!"
| _ -> "This list is empty"
> f [1]
> "This list has at least one element!"
> f [1; 2]
> "This list has at least one element!"
> f []
> "This list is empty"
В вашем случае может быть несколько возможностей: оба списка пусты, один пуст, а другой нет или оба имеют хотя бы один элемент:
pairlists l m =
match l, m with
| (lhead :: ltail), (mhead :: mtail) -> // both non-empty
| [], (mhead :: mtail) -> // first list empty, second is not
| (lhead :: ltail), [] -> // second is empty, first is not
| [], [] -> // both are empty
Теперь все, что вам нужно сделать, это решить, каким должен быть результат функции в каждом из этих четырех случаев, а затем записать его.
Я не собираюсьдать вам полный ответ, так как это, очевидно, домашнее задание, но вот еще один совет: объединение двух непустых списков означает объединение их голов (т.е. первых элементов), затем объединение их хвостов, затем соединение этих двух вместе.