Вот мое определение типа:
type ('type1, 'type2) symbol =
| N of 'type1
| T of 'type2
Вот несколько типов:
type mysub =| Abc | Bcd | Def
У меня также есть список [N Abc;N Bcd; T"("]
.
Что я хочу сделать - это выбросить все элементы типа T
, а также выбросить 'type1
или 'type2
. Таким образом, желаемый результат [Abc; Bcd]
Но когда я попробую этот кусок кода:
List.map (fun x-> match x with N (a)->a |T (b) ->b ) (List.filter (fun x->match x with
N (type1) ->true |T (type2) -> false) [N Abc;N Bcd; T"("]);;
это дает мне следующее сообщение:
Error: This expression has type (mysub, string) symbol list
but an expression was expected of type
(mysub, mysub) symbol list
Type string is not compatible with type mysub.
Как я могу это исправить?