Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % ./dist/build/selenc/selenc -P test/frac.sl
- ===> Stage: parsing
- * definition of fracRec:
- TmAbs () (MkVarName {unVarName = "x"}) Nothing (TmIf () (TmApp () (TmVar () (MkVarName {unVarName = "isZero"})) (TmVar () (MkVarName {unVarName = "x"}))) (TmInt () 1) (TmApp () (TmApp () (TmVar () (MkVarName {unVarName = "mult"})) (TmVar () (MkVarName {unVarName = "x"}))) (TmApp () (TmVar () (MkVarName {unVarName = "fracRec"})) (TmApp () (TmVar () (MkVarName {unVarName = "pred"})) (TmVar () (MkVarName {unVarName = "x"}))))))
- * definition of fracTail:
- TmLet () (MkVarName {unVarName = "f"}) Nothing (TmIf () (TmApp () (TmVar () (MkVarName {unVarName = "isZero"})) (TmVar () (MkVarName {unVarName = "x"}))) (TmInt () 1) (TmApp () (TmApp () (TmVar () (MkVarName {unVarName = "f"})) (TmApp () (TmApp () (TmVar () (MkVarName {unVarName = "mult"})) (TmVar () (MkVarName {unVarName = "x"}))) (TmVar () (MkVarName {unVarName = "aux"})))) (TmApp () (TmVar () (MkVarName {unVarName = "pred"})) (TmVar () (MkVarName {unVarName = "x"}))))) (TmAbs () (MkVarName {unVarName = "aux"}) Nothing (TmAbs () (MkVarName {unVarName = "x"}) Nothing (TmVar () (MkVarName {unVarName = "f"}))))
- ===> Stage: CPS transformation
- * CPS transformation of fracRec:
- FIX [(MkVarName {unVarName = "@0"},[MkVarName {unVarName = "@1"},MkVarName {unVarName = "x"}],FIX [(MkVarName {unVarName = "@2"},[MkVarName {unVarName = "@3"}],APP (VVAR (MkVarName {unVarName = "@1"})) [VVAR (MkVarName {unVarName = "@3"})])] (FIX [(MkVarName {unVarName = "@12"},[MkVarName {unVarName = "@13"}],SWITCH (VVAR (MkVarName {unVarName = "@13"})) [FIX [(MkVarName {unVarName = "@4"},[MkVarName {unVarName = "@5"}],APP (VVAR (MkVarName {unVarName = "@2"})) [VVAR (MkVarName {unVarName = "@5"})])] (FIX [(MkVarName {unVarName = "@6"},[MkVarName {unVarName = "@7"}],FIX [(MkVarName {unVarName = "@8"},[MkVarName {unVarName = "@9"}],APP (VVAR (MkVarName {unVarName = "@7"})) [VVAR (MkVarName {unVarName = "@4"}),VVAR (MkVarName {unVarName = "@9"})])] (FIX [(MkVarName {unVarName = "@10"},[MkVarName {unVarName = "@11"}],APP (VVAR (MkVarName {unVarName = "fracRec"})) [VVAR (MkVarName {unVarName = "@8"}),VVAR (MkVarName {unVarName = "@11"})])] (APP (VVAR (MkVarName {unVarName = "pred"})) [VVAR (MkVarName {unVarName = "@10"}),VVAR (MkVarName {unVarName = "x"})])))] (APP (VVAR (MkVarName {unVarName = "mult"})) [VVAR (MkVarName {unVarName = "@6"}),VVAR (MkVarName {unVarName = "x"})]))] (APP (VVAR (MkVarName {unVarName = "@2"})) [VINT 1]))] (APP (VVAR (MkVarName {unVarName = "isZero"})) [VVAR (MkVarName {unVarName = "@12"}),VVAR (MkVarName {unVarName = "x"})])))] (APP (VVAR (MkVarName {unVarName = "kexit"})) [VVAR (MkVarName {unVarName = "@0"})])
- * CPS transformation of fracTail:
- FIX [(MkVarName {unVarName = "@0"},[MkVarName {unVarName = "@1"}],APP (VVAR (MkVarName {unVarName = "kexit"})) [VVAR (MkVarName {unVarName = "@1"})])] (FIX [(MkVarName {unVarName = "@2"},[MkVarName {unVarName = "@3"}],FIX [(MkVarName {unVarName = "@4"},[MkVarName {unVarName = "@5"},MkVarName {unVarName = "aux"}],FIX [(MkVarName {unVarName = "@6"},[MkVarName {unVarName = "@7"},MkVarName {unVarName = "x"}],APP (VVAR (MkVarName {unVarName = "@7"})) [VVAR (MkVarName {unVarName = "f"})])] (APP (VVAR (MkVarName {unVarName = "@5"})) [VVAR (MkVarName {unVarName = "@6"})]))] (APP (VVAR (MkVarName {unVarName = "@0"})) [VVAR (MkVarName {unVarName = "@3"})]))] (FIX [(MkVarName {unVarName = "@18"},[MkVarName {unVarName = "@19"}],SWITCH (VVAR (MkVarName {unVarName = "@19"})) [FIX [(MkVarName {unVarName = "@8"},[MkVarName {unVarName = "@9"}],APP (VVAR (MkVarName {unVarName = "@2"})) [VVAR (MkVarName {unVarName = "@9"})])] (FIX [(MkVarName {unVarName = "@10"},[MkVarName {unVarName = "@11"}],FIX [(MkVarName {unVarName = "@12"},[MkVarName {unVarName = "@13"}],APP (VVAR (MkVarName {unVarName = "@11"})) [VVAR (MkVarName {unVarName = "@8"}),VVAR (MkVarName {unVarName = "@13"})])] (APP (VVAR (MkVarName {unVarName = "pred"})) [VVAR (MkVarName {unVarName = "@12"}),VVAR (MkVarName {unVarName = "x"})]))] (FIX [(MkVarName {unVarName = "@14"},[MkVarName {unVarName = "@15"}],APP (VVAR (MkVarName {unVarName = "f"})) [VVAR (MkVarName {unVarName = "@10"}),VVAR (MkVarName {unVarName = "@15"})])] (FIX [(MkVarName {unVarName = "@16"},[MkVarName {unVarName = "@17"}],APP (VVAR (MkVarName {unVarName = "@17"})) [VVAR (MkVarName {unVarName = "@14"}),VVAR (MkVarName {unVarName = "aux"})])] (APP (VVAR (MkVarName {unVarName = "mult"})) [VVAR (MkVarName {unVarName = "@16"}),VVAR (MkVarName {unVarName = "x"})]))))] (APP (VVAR (MkVarName {unVarName = "@2"})) [VINT 1]))] (APP (VVAR (MkVarName {unVarName = "isZero"})) [VVAR (MkVarName {unVarName = "@18"}),VVAR (MkVarName {unVarName = "x"})])))
Add Comment
Please, Sign In to add comment