pChainr :: (Parser (a a -> a)) (Parser a) -> Parser a
pChainr op p = flip ($) <$> p <*> (flip <$> op <*> pChainr op p) <|> p
-parse :: [Token] -> Either [String] AST
-parse ts = case runStateT (AST <$> pAST <* pEof) {zero & tokens=ts} of
+parse :: [Token] -> Either [String] [Function]
+parse ts = case runStateT (pAST <* pEof) {zero & tokens=ts} of
Right (a, _) = Right a
Left e = Left e
where