Agda-2.3.2.2: src/prototyping/terms/Main.hs
import System.Environment
import Text.PrettyPrint
import qualified Syntax.Abs as A
import Syntax.Lex
import Syntax.Par
import Syntax.ErrM
import Monad
import Check
import Term
import Eval
import Pretty
showDef (Decl x) = return [show x]
showDef (Def x v) = do
v1 <- reduce v
-- v2 <- normalize v
return [ show $ pretty x <+> text "=" <+> pretty v
, show $ nest 2 $ text "-->" <+> pretty v1
-- , " ==> " ++ show v2
]
main = do
[file] <- getArgs
s <- readFile file
case pProgram (myLexer s) of
Bad err -> putStrLn $ "Parse error: " ++ err
Ok p -> case runTC (checkProg p >>= mapM showDef) of
Left err -> putStrLn $ "Scope error: " ++ err
Right ss -> putStr $ unlines (concat ss)