SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Deriving a Uniform
 Compiler and VM
       with
 Low-Level Code
   Generation

                 Jaiyalas
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                                                                      Compt
Term
                                                    VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                                                                  Term
                                                                      Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                                                                      Compt
Term
                                                    VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                                                                  Term
                                                                      Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                                                                      Compt
Term
                                                    VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                                                                  Term
                                                                      Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                                                                      Compt
Term
                                                    VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                                                                  Term
                                                                      Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                            type Compt =                              Compt
Term
                              Int -> Env -> Cont -> Val
                                               VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                        eval :: Term -> Compt                     Term
                            appK :: Cont -> Val -> Val                Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                                                                      Compt
Term
                                                    VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                                                                  Term
                                                                      Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
Term
            evaluator                                                  Term
Val
                  type Compt = [Inst]                                  Val
           Defunctionalizing
            Continuations
                                         eval appK appC                Cont
                    data Inst = Number Int                             Compt
Term                               | Access Int
                                                     VM
Val       eval             appK | Lambda Compt        for
                                           Low-Level Code Generation
Cont
                                   | Push Compt                        Term
                                   | Enter
                                                                       Val
                Currying &         | Leave
       Primitive Recursive Evaluator     eval appK appC                Cont
Term                                                                   Compt
                                         Defunctionalizing
Val       eval           appK          Run-Time Computation

Cont
Term
            evaluator                                                 Term
Val    eval        Source Code                                        Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
  VM Instructions
                                                                      Compt
Term
       appC High-Level Code appK                    VM
Val       eval    appK                               for
                                          Low-Level Code Generation
Cont                                                                  Term
                                                                      Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                                                                      Compt
Term
                                                    VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                                                                  Term
                                                                      Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                                                                      Compt
Term
                                                    VM
Val      eval
       eval               appK
                         Source Code                 for
                                          Low-Level Code Generation
Cont                                                                  Term
   VM Instructions                                                    Val
                Currying &
                             eval
       Primitive Recursive Evaluator             appK appC Cont
       appC VM Instructions appK
Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
eval      Source Code

                  VM Instructions
               (Run-Time Computation)

   Level
Environment            appC VM Instructions appK
Continuation
                  VM Instructions
               (Run-Time Computation)
   Level
Environment            appC VM Instructions appK
Continuation
Demo
                               feval3.hs
                           compile exp6
                     run $ compile exp6
run $ compile $ deq $ run $ compile exp6

                              feval42.hs
                           compile exp6
                     run $ compile exp6
         run $ deq $ run $ compile exp6
Non-Uniform
    Compilation
        and
Failure of Low-Level
  Code Generation
eval       Source Code, Level

                  VM Instructions
               (Run-Time Computation)

   Level
Environment            appC VM Instructions appK
Continuation
                  VM Instructions
               (Run-Time Computation)
   Level
Environment            appC VM Instructions appK
Continuation
Term
             evaluator                 Uniform                        Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                            type Compt =                              Compt
Term
                              Int -> Env -> Cont -> Val
                                               VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                        eval :: Term -> Compt                     Term
                            appK :: Cont -> Val -> Val                Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
Term
             evaluator                                                   Term
Val
                                       Non-Uniform                       Val
            Defunctionalizing
             Continuations
                                           eval     appK appC Cont
                                                                         Compt
Term                       type Compt =     VM
Val       eval            appK -> Cont -> Val
                             Env            for
                                             Low-Level Code Generation
Cont                        eval :: Term -> Int ->Compt                  Term
                            appK :: Cont -> Val -> Val                   Val
                Currying &
       Primitive Recursive Evaluator       eval     appK appC Cont

Term                                                                     Compt
                                            Defunctionalizing
Val       eval            appK            Run-Time Computation

Cont
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                                                                      Compt
Term
                                                    VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                                                                  Term
                                                                      Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
Term   type Compt = [Inst]
             evaluator                                              Term
Val    data Inst = Number Int                                       Val
                | Access Int
            Defunctionalizing         eval appK appC                Cont
              Continuations
                | Lambda Compt
                | Push Compt                                        Compt
Term
                | Enter                L = 0 VM
Val       eval LeaveappK                            for
                |                       Low-Level Code Generation
Cont            | Plus Compt                                        Term
                | QLit Int                                          Val
                Currying &
       Primitive|Recursive Evaluator
                  QVar Int            eval appK appC                Cont
                | PushQAbs Compt Int L > 0
Term            | PushQApp Compt                                    Compt
Val        eval | PushQNextappK        Defunctionalizing
                                     Run-Time Computation
                | PushQPrev
Cont            | PushQAdd Compt
Enter   compiler   Next , 0




PushQNext    compiler   Next , 1
Enter         compiler
                              o r m
                                  Next , 0

                        n if
                n - U
PushQNext
             N o   compiler       Next , 1
eval         Source Code, Level

 L=0      L>0
VM Instructions



appC     appCQ High-Level Code appK      appKQ




High-Level Code
                              /Jainon/nonnifeval3.hs
VM Instructions




    appC            appCQ




    appK            appKQ

Interpretation    Compilation   VM
Demo


                  Jainon/nonnifeval3.hs
                           compile exp6
                     run $ compile exp6
run $ compile $ deq $ run $ compile exp6
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                                                                      Compt
Term
                                                    VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                                                                  Term
                                                                      Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing          eval      appK appC Cont




                                                 ?
             Continuations

                                                                      Compt
Term
                                                    VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                                                                  Term
                                                                      Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
compiler       Source Code, Level

 L=0    L>0

VM Instructions

     VM
                        | QLit Int
        L>0             | QVar Int
                        | PushQAbs Compt Int
                        | PushQApp Compt
                        | PushQNext
                        | PushQPrev
                        | PushQAdd Compt
compiler        Source Code, Level

 L=0     L>0

VM Instructions

     VM
           o r m
       n if              | QLit Int
                         | QVar Int
     U   L>0
                         | PushQAbs Compt Int
                         | PushQApp Compt
                         | PushQNext
                         | PushQPrev
                         | PushQAdd Compt
data Inst = Lv0Numer Int
          | Lv0Access Int
          | Lv0Lambda Compt
          | Lv0...
          | Lv1Number Int
          | Lv1Access Int
          | Lv1...
          | ...
          | LvnNumber Int
          | Lvn ...
data Inst = Lv0Numer Int
          | Lv0Access Int
          | Lv0Lambda Compt
          | Lv0...
          | Lv1Number Int
          | Lv1Access Int
          | Lv1...
          | ...
          | LvnNumber Int
          | Lvn ...
Source Code, Level


         compiler


Instructions            VMn



                VM


               Result
Term
             evaluator                                                Term
Val
                                                                      Val
            Defunctionalizing
             Continuations
                                       eval      appK appC Cont
                                                                      Compt
Term
                                                    VM
Val       eval            appK                       for
                                          Low-Level Code Generation
Cont                                                                  Term
                                                                      Val
                Currying &
       Primitive Recursive Evaluator    eval     appK appC Cont

Term                                                                  Compt
                                         Defunctionalizing
Val       eval            appK         Run-Time Computation

Cont
(Next (Next (Add (Lit 2) (Lit 3))))


                 Compiler


[Enter,PushQNext,PushQAdd [QLit 2],QLit 3]


                    VM


Quot [PushQNext,PushQAdd [QLit 2],QLit 3]
(Next (Next (Add (Lit 2) (Lit 3))))


                 Compiler


[Enter,PushQNext,PushQAdd [QLit 2],QLit 3]


                    VM
                             ? ? ?
                     l =
                v e
             e
Quot [PushQNext,PushQAdd [QLit 2],QLit 3]
           L
dmdq   =   demote   +    deq




                    /Jainon/nonnifeval42o.hs
Quot [PushQNext,PushQAdd [QLit 2],QLit 3]


                   dmdq


      [Enter,PushQAdd [QLit 2],QLit 3]


                    VM


      Quot [PushQAdd [QLit 2],QLit 3]
Quot [PushQAdd [QLit 2],QLit 3]


             dmdq


   [Plus [Number 2],Number 3]


              VM


              Val 5
Demo


exp7 = (Next (Next (App
   (Abs (Prev (Prev (Add (Lit 11) (Lit 13)))))
   (Prev (App
       (Abs (Var 0))
       (Next (Add (Lit 1) (Lit 3))))))))
Demo

                     Jainon/nonnifeval42o.hs
                               compile exp7
                          run $ compile exp7
             run $ dmdq $ run $ compile exp7
run $ dmdq $ run $ dmdq $ run $ compile exp7
END

Weitere ähnliche Inhalte

Mehr von Yun-Yan Chi

for "Parallelizing Multiple Group-by Queries using MapReduce"
for "Parallelizing Multiple Group-by Queries using MapReduce"for "Parallelizing Multiple Group-by Queries using MapReduce"
for "Parallelizing Multiple Group-by Queries using MapReduce"Yun-Yan Chi
 
Program Language - Fall 2013
Program Language - Fall 2013 Program Language - Fall 2013
Program Language - Fall 2013 Yun-Yan Chi
 
Machine X Language
Machine X LanguageMachine X Language
Machine X LanguageYun-Yan Chi
 
Examples for loopless
Examples for looplessExamples for loopless
Examples for looplessYun-Yan Chi
 
Data type a la carte
Data type a la carteData type a la carte
Data type a la carteYun-Yan Chi
 
Genetic programming
Genetic programmingGenetic programming
Genetic programmingYun-Yan Chi
 
Paper presentation: The relative distance of key point based iris recognition
Paper presentation: The relative distance of key point based iris recognitionPaper presentation: The relative distance of key point based iris recognition
Paper presentation: The relative distance of key point based iris recognitionYun-Yan Chi
 
Number System in Haskell
Number System in Haskell Number System in Haskell
Number System in Haskell Yun-Yan Chi
 
Constructing List Homomorphisms from Proofs
Constructing List Homomorphisms from ProofsConstructing List Homomorphisms from Proofs
Constructing List Homomorphisms from ProofsYun-Yan Chi
 

Mehr von Yun-Yan Chi (11)

for "Parallelizing Multiple Group-by Queries using MapReduce"
for "Parallelizing Multiple Group-by Queries using MapReduce"for "Parallelizing Multiple Group-by Queries using MapReduce"
for "Parallelizing Multiple Group-by Queries using MapReduce"
 
Program Language - Fall 2013
Program Language - Fall 2013 Program Language - Fall 2013
Program Language - Fall 2013
 
Machine X Language
Machine X LanguageMachine X Language
Machine X Language
 
Examples for loopless
Examples for looplessExamples for loopless
Examples for loopless
 
Insert 2 Merge
Insert 2 MergeInsert 2 Merge
Insert 2 Merge
 
Any tutor
Any tutorAny tutor
Any tutor
 
Data type a la carte
Data type a la carteData type a la carte
Data type a la carte
 
Genetic programming
Genetic programmingGenetic programming
Genetic programming
 
Paper presentation: The relative distance of key point based iris recognition
Paper presentation: The relative distance of key point based iris recognitionPaper presentation: The relative distance of key point based iris recognition
Paper presentation: The relative distance of key point based iris recognition
 
Number System in Haskell
Number System in Haskell Number System in Haskell
Number System in Haskell
 
Constructing List Homomorphisms from Proofs
Constructing List Homomorphisms from ProofsConstructing List Homomorphisms from Proofs
Constructing List Homomorphisms from Proofs
 

Deriving a compiler and interpreter for a Multi-level

  • 1. Deriving a Uniform Compiler and VM with Low-Level Code Generation Jaiyalas
  • 2. Term evaluator Term Val Val Defunctionalizing Continuations eval appK appC Cont Compt Term VM Val eval appK for Low-Level Code Generation Cont Term Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 3. Term evaluator Term Val Val Defunctionalizing Continuations eval appK appC Cont Compt Term VM Val eval appK for Low-Level Code Generation Cont Term Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 4. Term evaluator Term Val Val Defunctionalizing Continuations eval appK appC Cont Compt Term VM Val eval appK for Low-Level Code Generation Cont Term Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 5. Term evaluator Term Val Val Defunctionalizing Continuations eval appK appC Cont Compt Term VM Val eval appK for Low-Level Code Generation Cont Term Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 6. Term evaluator Term Val Val Defunctionalizing Continuations eval appK appC Cont type Compt = Compt Term Int -> Env -> Cont -> Val VM Val eval appK for Low-Level Code Generation Cont eval :: Term -> Compt Term appK :: Cont -> Val -> Val Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 7. Term evaluator Term Val Val Defunctionalizing Continuations eval appK appC Cont Compt Term VM Val eval appK for Low-Level Code Generation Cont Term Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 8. Term evaluator Term Val type Compt = [Inst] Val Defunctionalizing Continuations eval appK appC Cont data Inst = Number Int Compt Term | Access Int VM Val eval appK | Lambda Compt for Low-Level Code Generation Cont | Push Compt Term | Enter Val Currying & | Leave Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 9. Term evaluator Term Val eval Source Code Val Defunctionalizing Continuations eval appK appC Cont VM Instructions Compt Term appC High-Level Code appK VM Val eval appK for Low-Level Code Generation Cont Term Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 10. Term evaluator Term Val Val Defunctionalizing Continuations eval appK appC Cont Compt Term VM Val eval appK for Low-Level Code Generation Cont Term Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 11. Term evaluator Term Val Val Defunctionalizing Continuations eval appK appC Cont Compt Term VM Val eval eval appK Source Code for Low-Level Code Generation Cont Term VM Instructions Val Currying & eval Primitive Recursive Evaluator appK appC Cont appC VM Instructions appK Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 12. eval Source Code VM Instructions (Run-Time Computation) Level Environment appC VM Instructions appK Continuation VM Instructions (Run-Time Computation) Level Environment appC VM Instructions appK Continuation
  • 13. Demo feval3.hs compile exp6 run $ compile exp6 run $ compile $ deq $ run $ compile exp6 feval42.hs compile exp6 run $ compile exp6 run $ deq $ run $ compile exp6
  • 14. Non-Uniform Compilation and Failure of Low-Level Code Generation
  • 15. eval Source Code, Level VM Instructions (Run-Time Computation) Level Environment appC VM Instructions appK Continuation VM Instructions (Run-Time Computation) Level Environment appC VM Instructions appK Continuation
  • 16. Term evaluator Uniform Term Val Val Defunctionalizing Continuations eval appK appC Cont type Compt = Compt Term Int -> Env -> Cont -> Val VM Val eval appK for Low-Level Code Generation Cont eval :: Term -> Compt Term appK :: Cont -> Val -> Val Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 17. Term evaluator Term Val Non-Uniform Val Defunctionalizing Continuations eval appK appC Cont Compt Term type Compt = VM Val eval appK -> Cont -> Val Env for Low-Level Code Generation Cont eval :: Term -> Int ->Compt Term appK :: Cont -> Val -> Val Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 18. Term evaluator Term Val Val Defunctionalizing Continuations eval appK appC Cont Compt Term VM Val eval appK for Low-Level Code Generation Cont Term Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 19. Term type Compt = [Inst] evaluator Term Val data Inst = Number Int Val | Access Int Defunctionalizing eval appK appC Cont Continuations | Lambda Compt | Push Compt Compt Term | Enter L = 0 VM Val eval LeaveappK for | Low-Level Code Generation Cont | Plus Compt Term | QLit Int Val Currying & Primitive|Recursive Evaluator QVar Int eval appK appC Cont | PushQAbs Compt Int L > 0 Term | PushQApp Compt Compt Val eval | PushQNextappK Defunctionalizing Run-Time Computation | PushQPrev Cont | PushQAdd Compt
  • 20. Enter compiler Next , 0 PushQNext compiler Next , 1
  • 21. Enter compiler o r m Next , 0 n if n - U PushQNext N o compiler Next , 1
  • 22. eval Source Code, Level L=0 L>0 VM Instructions appC appCQ High-Level Code appK appKQ High-Level Code /Jainon/nonnifeval3.hs
  • 23. VM Instructions appC appCQ appK appKQ Interpretation Compilation VM
  • 24. Demo Jainon/nonnifeval3.hs compile exp6 run $ compile exp6 run $ compile $ deq $ run $ compile exp6
  • 25. Term evaluator Term Val Val Defunctionalizing Continuations eval appK appC Cont Compt Term VM Val eval appK for Low-Level Code Generation Cont Term Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 26. Term evaluator Term Val Val Defunctionalizing eval appK appC Cont ? Continuations Compt Term VM Val eval appK for Low-Level Code Generation Cont Term Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 27. compiler Source Code, Level L=0 L>0 VM Instructions VM | QLit Int L>0 | QVar Int | PushQAbs Compt Int | PushQApp Compt | PushQNext | PushQPrev | PushQAdd Compt
  • 28. compiler Source Code, Level L=0 L>0 VM Instructions VM o r m n if | QLit Int | QVar Int U L>0 | PushQAbs Compt Int | PushQApp Compt | PushQNext | PushQPrev | PushQAdd Compt
  • 29. data Inst = Lv0Numer Int | Lv0Access Int | Lv0Lambda Compt | Lv0... | Lv1Number Int | Lv1Access Int | Lv1... | ... | LvnNumber Int | Lvn ...
  • 30. data Inst = Lv0Numer Int | Lv0Access Int | Lv0Lambda Compt | Lv0... | Lv1Number Int | Lv1Access Int | Lv1... | ... | LvnNumber Int | Lvn ...
  • 31. Source Code, Level compiler Instructions VMn VM Result
  • 32. Term evaluator Term Val Val Defunctionalizing Continuations eval appK appC Cont Compt Term VM Val eval appK for Low-Level Code Generation Cont Term Val Currying & Primitive Recursive Evaluator eval appK appC Cont Term Compt Defunctionalizing Val eval appK Run-Time Computation Cont
  • 33. (Next (Next (Add (Lit 2) (Lit 3)))) Compiler [Enter,PushQNext,PushQAdd [QLit 2],QLit 3] VM Quot [PushQNext,PushQAdd [QLit 2],QLit 3]
  • 34. (Next (Next (Add (Lit 2) (Lit 3)))) Compiler [Enter,PushQNext,PushQAdd [QLit 2],QLit 3] VM ? ? ? l = v e e Quot [PushQNext,PushQAdd [QLit 2],QLit 3] L
  • 35. dmdq = demote + deq /Jainon/nonnifeval42o.hs
  • 36. Quot [PushQNext,PushQAdd [QLit 2],QLit 3] dmdq [Enter,PushQAdd [QLit 2],QLit 3] VM Quot [PushQAdd [QLit 2],QLit 3]
  • 37. Quot [PushQAdd [QLit 2],QLit 3] dmdq [Plus [Number 2],Number 3] VM Val 5
  • 38. Demo exp7 = (Next (Next (App (Abs (Prev (Prev (Add (Lit 11) (Lit 13))))) (Prev (App (Abs (Var 0)) (Next (Add (Lit 1) (Lit 3))))))))
  • 39. Demo Jainon/nonnifeval42o.hs compile exp7 run $ compile exp7 run $ dmdq $ run $ compile exp7 run $ dmdq $ run $ dmdq $ run $ compile exp7
  • 40. END