tapl.arith
- (chapters 3, 4).tapl.untyped
(chapters 5-7).tapl.fulluntyped
(chapters 5-7).tapl.tyarith
(chapter 8).tapl.simplebool
(chapter 10).tapl.fullsimple
(chapter 9 and 11).tapl.fullref
(chapter 13, 18)tapl.fullerror
(chapter 14)tapl.rcdsubbot
(chapter 15)tapl.fullsub
(chapters 15-17)tapl.bot
(chapter 16)tapl.fullequirec
(chapter 20).tapl.fullisorec
(chapter 20).tapl.equirec
(chapter 21).tapl.recon
(chapter 22).tapl.fullrecon
(chapter 22).tapl.fullpoly
(chapters 23, 24).tapl.fullomega
(chapters 23, 29, 30).tapl.fullfsub
(chapters 26, 28).tapl.fullfomsub
(chapters 26, 31).tapl.fullfomsubref
(chapter 27) combination of all systems from the book.
The code structure for each implementation follows the original code structure and consists of 4 files:
syntax.scala
- AST, contexts, commands, pretty-printing.parser.scala
- parsing.core.scala
- evaluator and typer.demo.scala
- the main application for processing input files.
sbt
> run
Multiple main classes detected, select one to run:
[1] tapl.fullisorec.FullIsorecDemo
[2] tapl.rcdsubbot.RcdSubBotDemo
[3] tapl.arith.ArithDemo
[4] tapl.simplebool.SimpleBoolDemo
[5] tapl.equirec.EquirecDemo
[6] tapl.tyarith.TyArithDemo
[7] tapl.untyped.UntypedDemo
[8] tapl.fullfsub.FullFSubDemo
[9] tapl.fullpoly.FullPolyDemo
[10] tapl.recon.ReconDemo
[11] tapl.fullfomsub.FullFomSubDemo
[12] tapl.fullerror.FullErrorDemo
[13] tapl.fulluntyped.UntypedDemo
[14] tapl.fullsub.FullSubDemo
[15] tapl.fullequirec.FullEquirecDemo
[16] tapl.fullrecon.FullReconDemo
[17] tapl.fullref.FullRefDemo
[18] tapl.fullomega.FullOmegaDemo
[19] tapl.fullsimple.FullSimpleDemo
[20] tapl.fullfomsubref.FullFomSubRefDemo
[21] tapl.bot.BotDemo
Enter number: 21
[info] Running tapl.bot.BotDemo
====================
(lambda x: Top. x): Top -> Top;
||
\/
(lambda x: Top. x): Top -> Top;
====================
((lambda x: Top. x) (lambda x: Top. x)): Top;
||
\/
(lambda x: Top. x): Top -> Top;
====================
((lambda x: Top -> Top. x) (lambda x: Top. x)): Top -> Top;
||
\/
(lambda x: Top. x): Top -> Top;
====================
(lambda x: Bot. x): Bot -> Bot;
||
\/
(lambda x: Bot. x): Bot -> Bot;
====================
(lambda x: Bot. x x): Bot -> Bot;
||
\/
(lambda x: Bot. x x): Bot -> Bot;
> run-main tapl.fulluntyped.UntypedDemo progs/fulluntyped.tapl
[info] Running tapl.fulluntyped.UntypedDemo progs/fulluntyped.tapl
====================
tru;
||
\/
(lambda t. lambda f. t);
====================
fls;
||
\/
(lambda t. lambda f. f);
====================
(tru tru);
||
\/
(lambda f. lambda t. lambda f'. t);
====================
(tru fls);
||
\/
(lambda f. lambda t. lambda f'. f');
====================
(test tru v w);
||
\/
((lambda m. lambda n. (lambda t. lambda f. t) m n) v w);
...