При сопоставлении с образцом вы должны деконструировать данные с помощью конструкторов данных, например:
match highestLevelObject with
| Int -> true
| Bool -> true
| Seq objs -> ...
| _ -> false
Обратите внимание на заглавную Int
, которая является конструктором данных , в отличие от int
это просто имя переменной, поэтому, когда вы пишете
match highestLevelObject with
| int -> ...
, это то же самое, что сказать
match highestLevelObject with
| anything -> ...
на самом деле, anything
здесь может быть любое имя переменной, которое будетсопоставлять любые данные и связывать себя с ними.Другими словами, match x with y -> f y
совпадает с let y = x in f y