Составляя ответ на основе комментария glennsl, я предполагаю, что этот фрагмент, введенный на верхний уровень, воспроизводит синтаксическую ошибку, которую вы нажимаете:
поскольку val
является зарезервированным ключевым словом, его использование в сопоставлении с образцом недопустимо. Ошибка говорит о том, что подчеркнутый токен val
вызывает синтаксическую ошибку, поскольку он ожидает что-то, что может быть частью шаблона .
Следующее должно без проблем скомпилироваться (например, с использованием некоторых случайных значений):
type value = A of int | B of bool | C of string
match [A 1; B true; C "foo"] with
| A x :: v :: tl -> Some (x, v)
| _ -> None
И это просто из-за замены ключевого слова val
на переменную v
в шаблоне.