import PGF main :: IO () main = do pgf <- readPGF "Arithmetic.pgf" interact (unlines . map (translate pgf transfer) . lines) translate :: PGF -> (Tree->Tree) -> String -> String translate pgf transfer s = case parseAllLang pgf (startCat pgf) s of (lang,tree:_):_ -> linearize pgf lang (transfer tree) _ -> "NO PARSE" transfer :: Tree -> Tree --transfer = ...