Предположим, что у меня есть тип данных в Haskell, как это:Haskell типа данных по шаблону в Alex
data Token = THEN AlexPosn
| ELSE AlexPosn
от Алекса, я понимаю, что:
data AlexPosn = AlexPn !Int !Int !Int
deriving (Eq,Show)
Я могу сделать шаблон согласования, как это:
eat_token :: Token -> [Token] -> [Token]
eat_token (THEN p1)((THEN p2):rest) = rest
eat_token (ELSE p1)((ELSE p2):rest) = rest
Но то, что я действительно хочу сделать вот это:
eat_token (_ p) tk2 = error "Syntax Error at:"++(show p)
Однако, я получаю:
Parse error in pattern.
Любые предложения?
Написать функцию, которая извлекает поле AlexPosn из разных лексем. – Ingo