Skip to content

Latest commit

 

History

History
257 lines (229 loc) · 13.4 KB

README.md

File metadata and controls

257 lines (229 loc) · 13.4 KB

core-lang-haskell

This repository is about an implementation of a simple functional language based on Simon[1].

Exercises

Chapter 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

Chapter 2

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

Chapter 3

Exercises in Chapter 3

Name Files
Exercise 3.1 /exercises/exercise3-01.v
Exercise 3.2 /exercises/exercise3-02.v
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

Chapter 4

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

Chapter 5

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

Chapter 6

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

References

Simon[1]: Simon L Peyton Jones, David R Lester. January 1992. Implementing functional languages: a tutorial. Prentice Hall