pChainr op p = flip ($) <$> p <*> (flip <$> op <*> pChainr op p) <|> p
parse :: [Token] -> Either [String] [Function]
-parse ts = fst <$> runStateT (pAST <* pEof) {tokens=ts, ifxs=[]}
+parse ts = fst <$> runStateT (reverse <$> pAST <* pEof) {tokens=ts, ifxs=[]}
where
pAST :: Parser [Function]
pAST = many pFunction >>= mapM \(id, args, body)->Function id args <$