Я пытаюсь выяснить, как сопоставить шаблон с пользовательскими типами.Например, у меня есть этот тип.
Type custom_type = B of bool | I of int | S of string | C of custom_type * custom_type
Я хочу, чтобы образцы соответствовали этим типам, и скажем, например, подсчитать количество целых в значении.Пример значения:
C(C(B true, I 5), C(S "example", B false))
Я думаю, что я очень близок к тому, чтобы выяснить это, я знаю, что мне нужно использовать подстановочные знаки, но я не могу записать каждый возможный экземпляр, потому что существует множество различных значенийМне нужно проверить.
Спасибо!
Редактировать: Код, который не работает:
let num = 0
let rec count_ints (c: custom_type):int =
match c with
| C (I(_), _) -> num + 1
| C (_, I(_)) -> num + 1
| C (C(_), _) -> count_ints c
| C (_, C(_)) -> count_ints c