This repository is about an implementation of a simple functional language based on Simon[1].
Exercises in Chapter 1
Name | Files |
---|---|
Exercise 1.1 | /exercises/exercise1-01.xls, /src/Language/PrettyPrinter.hs |
Exercise 1.2 | /src/Data/ISeq.hs |
Exercise 1.3 | /src/Language/PrettyPrinter.hs |
Exercise 1.4 | /exercises/exercise1-04.xls, /src/Language/PrettyPrinter.hs |
Exercise 1.5 | /src/Data/ISeq.hs |
Exercise 1.6 | /src/Data/ISeq.hs |
Exercise 1.7 | /src/Data/ISeq.hs |
Exercise 1.8 | /src/Language/PrettyPrinter.hs |
Exercise 1.9 | /src/Language/Parser.hs |
Exercise 1.10 | /src/Language/Parser.hs |
Exercise 1.11 | /src/Lanugage/Parser.hs |
Exercise 1.12 | /src/Lanugage/Parser.hs |
Exercise 1.13 | /src/Lanugage/Parser.hs |
Exercise 1.14 | /src/Lanugage/Parser.hs |
Exercise 1.15 | /src/Lanugage/Parser.hs |
Exercise 1.16 | /src/Lanugage/Parser.hs |
Exercise 1.17 | /src/Lanugage/Parser.hs |
Exercise 1.18 | /src/Lanugage/Parser.hs |
Exercise 1.19 | /src/Lanugage/Parser.hs |
Exercise 1.20 | /src/Lanugage/Parser.hs |
Exercise 1.21 | /src/Lanugage/Parser.hs |
Exercise 1.22 | /exercises/exercise1-22.md |
Exercise 1.23 | /src/Lanugage/Parser.hs |
Exercise 1.24 | /src/Lanugage/Parser.hs |
Exercises in Chapter 2
Name | Files |
---|---|
Exercise 2.1 | /exercises/exercise2-01.md |
Exercise 2.2 | /exercises/exercise2-02.md |
Exercise 2.3 | skipped |
Exercise 2.4 | /src/Language/TiMachine.hs |
Exercise 2.5 | /src/Language/TiMachine.hs |
Exercise 2.6 | /src/Language/TiMachine.hs |
Exercise 2.7 | /src/Language/TiMachine.hs |
Exercise 2.8 | /exercises/exercise2-08.md |
Exercise 2.9 | /exercises/exercise2-09.md |
Exercise 2.10 | /src/Language/TiMachine.hs |
Exercise 2.11 | /src/Language/TiMachine.hs |
Exercise 2.12 | /exercises/exercise2-12.md |
Exercise 2.13 | /src/Language/TiMachine.hs, /exercises/exercise2-13.md |
Exercise 2.14 | /src/Language/TiMachine.hs |
Exercise 2.15 | /exercises/exercise2-15.md |
Exercise 2.16 | /src/Language/TiMachine.hs |
Exercise 2.17 | /src/Language/TiMachine.hs |
Exercise 2.18 | /src/Language/TiMachine.hs, /exercises/exercise2-18.md |
Exercise 2.19 | /exercises/exercise2-19.md |
Exercise 2.20 | /src/Language/TiMachine.hs, /exercises/exercise2-20.core |
Exercise 2.21 | /src/Language/TiMachine.hs |
Exercise 2.22 | /src/Language/TiMachine.hs, /exercises/exercise2-22.md |
Exercise 2.23 | /exercises/exercise2-23.core |
Exercise 2.24 | /src/Language/TiMachine.hs, /exercises/exercise2-24.md |
Exercise 2.25 | /exercises/exercise2-25.md |
Exercise 2.26 | /src/Language/TiMachine.hs |
Exercise 2.27 | /src/Language/TiMachineAlter.hs |
Exercise 2.28 | /src/Language/TiMachineAlter.hs |
Exercise 2.29 | /src/Language/TiMachineAlter.hs, /exercises/exercise2-29.md |
Exercise 2.30 | /src/Language/TiMachineGC.hs |
Exercise 2.31 | /src/Language/TiMachineGC.hs |
Exercise 2.32 | /src/Language/TiMachineGC.hs |
Exercise 2.33 | /src/Language/TiMachineGC.hs |
Exercise 2.34 | /exercises/exercise2-34.md |
Exercise 2.35 | /src/Language/TiMachineGC.hs |
Exercise 2.36 | /src/Language/TiMachineGC.hs |
Exercises in Chapter 3
Name | Files |
---|---|
Exercise 3.1 | /exercises/exercise3-01.v |
Exercise 3.2 | |
Exercise 3.3 | /exercises/exercise3-03.md |
Exercise 3.4 | /exercises/exercise3-04.md |
Exercise 3.5 | skipped |
Exercise 3.6 | /src/Language/GMachine.hs |
Exercise 3.7 | /src/Language/GMachine.hs |
Exercise 3.8 | /src/Language/GMachine.hs |
Exercise 3.9 | /src/Language/GMachine.hs |
Exercise 3.10 | /src/Language/GMachine.hs |
Exercise 3.11 | /exercises/exercise3-11.md |
Exercise 3.12 | /src/Language/GMachine.hs |
Exercise 3.13 | skipped |
Exercise 3.14 | /src/Language/GMachine.hs |
Exercise 3.15 | /src/Language/GMachine.hs |
Exercise 3.16 | /src/Language/GMachine.hs |
Exercise 3.17 | /exercises/exercise3-17.core |
Exercise 3.18 | skipped |
Exercise 3.19 | /exercises/exercise3-19.compiled |
Exercise 3.20 | /exercises/exercise3-20.md |
Exercise 3.21 | /src/Language/GMachine.hs |
Exercise 3.22 | /src/Language/GMachine.hs |
Exercise 3.23 | /src/Language/GMachine.hs |
Exercise 3.24 | /exercises/exercise3-24.md |
Exercise 3.25 | /src/Language/GMachine.hs |
Exercise 3.26 | /exercises/exercise3-26.md |
Exercise 3.27 | /src/Language/GMachine.hs |
Exercise 3.28 | /src/Language/GMachine.hs |
Exercise 3.29 | /src/Language/GMachine.hs, /exercises/exercise3-29.md |
Exercise 3.30 | skipped |
Exercise 3.31 | /src/Language/GMachine.hs |
Exercise 3.32 | /src/Language/GMachine.hs |
Exercise 3.33 | /src/Language/GMachine.hs |
Exercise 3.34 | /src/Language/GMachine.hs |
Exercise 3.35 | /src/Language/GMachine.hs |
Exercise 3.36 | skipped |
Exercise 3.37 | /src/Language/GMachine.hs |
Exercise 3.38 | /src/Language/GMachine.hs |
Exercise 3.39 | /src/Language/GMachine.hs |
Exercise 3.40 | /src/Language/GMachine.hs |
Exercise 3.41 | /src/Language/GMachine.hs |
Exercise 3.42 | /src/Language/GMachine.hs |
Exercise 3.43 | /src/Language/GMachine.hs |
Exercise 3.44 | /src/Language/GMachine.hs |
Exercise 3.45 | /exercises/exercise3-45.md |
Exercise 3.46 | /src/Language/GMachine.hs |
Exercise 3.47 | /src/Language/GMachine.hs, /exercises/exercise3-47.md |
Exercises in Chapter 4
Name | Files |
---|---|
Exercise 4.1 | /src/Language/TIM.hs |
Exercise 4.2 | /src/Language/TIM.hs |
Exercise 4.3 | /src/Language/TIM.hs |
Exercise 4.4 | /src/Language/TIM.hs |
Exercise 4.5 | /src/Language/TIM.hs |
Exercise 4.6 | /src/Language/TIM.hs |
Exercise 4.7 | /src/Language/TIM.hs |
Exercise 4.8 | /src/Language/TIM.hs |
Exercise 4.9 | /exercises/exercise4-09.md |
Exercise 4.10 | /exercises/exercise4-10.md |
Exercise 4.11 | /src/Language/TIM.hs |
Exercise 4.12 | /exercises/exercise4-12.md |
Exercise 4.13 | /src/Language/TIM.hs |
Exercise 4.14 | /src/Language/TIM.hs |
Exercise 4.15 | /src/Language/TIM.hs |
Exercise 4.16 | /src/Language/TIM.hs |
Exercise 4.17 | /src/Language/TIM.hs |
Exercise 4.18 | /src/Language/TIM.hs |
Exercise 4.19 | /src/Language/TIM.hs |
Exercise 4.20 | /src/Language/TIM.hs |
Exercise 4.21 | /src/Language/TIM.hs |
Exercise 4.22 | /src/Language/TIM.hs |
Exercise 4.23 | /src/Language/TIM.hs |
Exercise 4.24 | /src/Language/TIM.hs |
Exercise 4.25 | /src/Language/TIM.hs |
Exercise 4.26 | /src/Language/TIM.hs |
Exercise 4.27 | /src/Language/TIM.hs |
Exercise 4.28 | /src/Language/TIM.hs |
Exercise 4.29 | /src/Language/TIM.hs |
Exercise 4.30 | /src/Language/TIM.hs |
Exercises in Chapter 5
Name | Files |
---|---|
Exercise 5.1 | /src/Language/ParGMachine.hs |
Exercise 5.2 | /src/Language/ParGMachine.hs |
Exercise 5.3 | /src/Language/ParGMachine.hs |
Exercise 5.4 | /exercises/exercise5-04.md |
Exercise 5.5 | /src/Language/ParGMachine.hs |
Exercise 5.6 | /exercises/exercise5-06.md |
Exercise 5.7 | /exercises/exercise5-07.md |
Exercise 5.8 | /src/Language/ParGMachine.hs |
Exercise 5.9 | /src/Language/ParGMachine.hs |
Exercise 5.10 | /exercises/exercise5-10.md |
Exercise 5.11 | /exercises/exercise5-11.md |
Exercise 5.12 | /exercises/exercise5-12.md |
Exercise 5.13 | /src/Language/ParGMachine.hs |
Exercise 5.14 | /src/Language/ParGMachine.hs |
Exercise 5.15 | /src/Language/ParGMachine.hs |
Exercise 5.16 | skipped |
Exercise 5.17 | /src/Language/ParGMachine.hs |
Exercise 5.18 | /src/Language/ParGMachine.hs |
Exercise 5.19 | /src/Language/ParGMachine.hs |
Exercise 5.20 | /src/Language/ParGMachine.hs |
Exercise 5.21 | /src/Language/ParGMachine.hs |
Exercise 5.22 | /src/Language/ParGMachine.hs |
Exercise 5.23 | /src/Language/ParGMachine.hs |
Exercises in Chapter 6
Name | Files |
---|---|
Exercise 6.1 | /src/Language/Types.hs |
Exercise 6.2 | /src/Language/Types.hs, /src/Language/PrettyPrinter.hs |
Exercise 6.3 | /src/Language/LambdaLifting.hs |
Exercise 6.4 | /src/Language/LambdaLifting.hs |
Exercise 6.5 | /src/Language/LambdaLifting.hs |
Exercise 6.6 | /src/Language/LambdaLifting.hs |
Exercise 6.7 | /src/Language/LambdaLifting.hs |
Exercise 6.8 | /src/Language/LambdaLifting.hs |
Exercise 6.9 | /src/Language/LambdaLifting.hs |
Exercise 6.10 | /src/Language/LambdaLifting.hs |
Exercise 6.11 | /src/Language/LambdaLifting.hs |
Exercise 6.12 | /src/Language/LambdaLifting.hs |
Exercise 6.13 | /exercises/exercise6-13.v |
Exercise 6.14 | /src/Language/LambdaLifting.hs, The proof is skipped |
Exercise 6.15 | /src/Language/LambdaLifting.hs, The proof is skipped |
Exercise 6.16 | /src/Language/LambdaLifting.hs |
Simon[1]: Simon L Peyton Jones, David R Lester. January 1992. Implementing functional languages: a tutorial. Prentice Hall