Итак, у меня есть тип данных вроде:
data Token = NUM Int | ID String | EOF
, и у меня есть функция вроде:
doStuff list = let
(token, rest) = getToken list
in
....
Итак, что я хочу сделать в ...
часть - это проверка, если полученный токен - NUM
или INT
или EOF
.Я могу сказать token==EOF
, чтобы проверить для этого случая, но я не могу найти способ проверить, является ли токен NUM
или INT
, используя условное выражение, поскольку token==(NUM n)
и token==NUM
оба приводят кошибки.Я знаю, что мог бы написать вспомогательную функцию для выполнения вещи в ...
и воспользоваться преимуществами сопоставления с образцом, но это действительно ухудшает читабельность того, что я делаю, и кажется, что должен быть способ сделать этопроверять.Кто-нибудь знает как?