Учитывая этот тип:
type typeT =
| A of int
| B of int
| C of int
| D of int
Я хочу упростить следующее совпадение (возвращая значение по умолчанию при сопоставлении D и идентичность в противном случае):
let match_example_1 t =
match t with
| A x -> A x
| B x -> B x
| C x -> C x
| D x -> D 1
;;
Во что-то вместестроки этого:
let match_example_2 t =
match t with
| D x -> D 1
| f x -> f x
;;
Или вот это:
let match_example_3 t =
match t with
| f x when f == D -> f 1
| f x -> f x
;;
Но я получаю синтаксическую ошибку при сопоставлении f x
.Я предполагаю, что есть кое-что о том, какие конструкторы на самом деле есть в ocaml и как выполняется сопоставление с образцом, что я не понимаю.Хотя мне не удалось найти причину, надеюсь, кто-то здесь может помочь.