Это match
не делает то, что вы думаете:
match var with
| x -> remove x tail
| _ -> var :: (remove x tail)
x
здесь представляет собой шаблон, состоящий из идентификатора (имени).Этот тип шаблона соответствует всем возможным значениям и привязывает имя к значению.
Таким образом, ваш шаблон соответствует постоянно и, следовательно, ваш список пуст.
Вы не можете использоватьшаблон для сопоставления со значением переменной, например x
.Вы можете сравнивать только с фиксированными значениями, такими как 3 или Нет.
Вы должны использовать оператор if
, чтобы проверить, равно ли var
x
.