Я озадачен тем, как сопоставление с образцом работает в F # для let
. Я использую интерактивное окно Visual Studio F #, F # версия 1.9.7.8. Допустим, мы определили простой тип:
type Point = Point of int * int ;;
и попытка сопоставить шаблон со значениями Point
, используя let
.
let Point(x, y) = Point(1, 2) in x ;;
терпит неудачу с error FS0039: The value or constructor 'x' is not defined
. Как можно использовать сопоставление с шаблоном с let
?
Самое любопытное, что:
let Point(x, y) as z = Point(1, 2) in x ;;
возвращает 1, как и ожидалось. Почему?