Oliver Payne
1d4447ad2b
Add missing file for exercise 3.43
2023-08-13 22:32:15 +01:00
Oliver Payne
c6ccffce8a
Add missing code for 4.1
2023-08-13 22:30:21 +01:00
Oliver Payne
e98e2cb924
Add missing files from previous exercises
2023-08-13 22:29:19 +01:00
Oliver Payne
7b095554f4
Add exercise 4.27
2023-08-13 22:28:06 +01:00
Oliver Payne
6e82d7bbf7
Add new primitive procedures
2023-08-12 23:13:36 +01:00
Oliver Payne
2f52190ebb
Add lazy evaluator
...
Slightly modified in structure from the book, but otherwise the same
2023-08-12 23:13:04 +01:00
Oliver Payne
67e6824403
Move user-print into common
2023-08-12 23:12:09 +01:00
Oliver Payne
4edf1c01e1
Fix refactor of eval special forms
2023-08-11 22:22:43 +01:00
Oliver Payne
daac72e455
Factor out special forms into a separate module
2023-08-07 23:02:31 +01:00
Oliver Payne
2dea1e7d2b
Merge branch 'interpreter-refactor'
2023-08-04 22:48:46 +01:00
Oliver Payne
0dfb6116df
Tidy up timing tests
2023-07-31 23:05:36 +01:00
Oliver Payne
3f445b0a16
Move scanning out to happen before analyzing
...
This also requires a move for the non-analyzing evaluator (it was
probably not in the best place before anyway). Now scanning out works
correctly for both.
2023-07-31 22:51:20 +01:00
Oliver Payne
ea746cd02a
Add unit tests and timing tests
2023-07-26 23:03:25 +01:00
Oliver Payne
883c967338
Move test-eval.rkt to mceval directory
2023-07-26 22:28:08 +01:00
Oliver Payne
b349000cc1
Fix eval-program
2023-07-26 22:27:06 +01:00
Oliver Payne
290ba35045
Add analyzing evaluator to mceval directory
...
Refactored to use common code with dd-mceval.
2023-07-25 23:00:47 +01:00
Oliver Payne
0d79c2098a
Move interpreter procedures to module level
...
Now, it should be possible to require each interpreter module.
2023-07-24 23:03:34 +01:00
Oliver Payne
2f57ff2818
Add show method to dispatch-table
2023-07-24 22:58:22 +01:00
Oliver Payne
4ad1e5516b
Move eval and related procedures into mce-evaluator procecure
2023-07-15 22:11:18 +01:00
Oliver Payne
807fdbaeda
Merge remote-tracking branch 'origin/interpreter-refactor' into interpreter-refactor
...
Conflicts:
mceval/dd-mceval.rkt
2023-07-14 22:31:53 +01:00
Oliver Payne
15ba90d1e0
Move scanning out procedure-body into syntax.rkt
2023-07-13 23:00:45 +01:00
Oliver Payne
9ea8c5c8ca
Add common.rkt
2023-07-13 22:30:15 +01:00
Oliver Payne
e2d8608492
Tidy up redundant comments and requires
2023-07-03 23:08:15 +01:00
Oliver Payne
b517f8c9aa
More re-arranging
...
All code now loads OK. Still need to extend initial environment to
include built-in procedures.
2023-06-24 23:04:41 +01:00
Oliver Payne
8453df4563
Move dd-mceval to mveval directory
2023-06-10 22:50:08 +01:00
Oliver Payne
47be978c57
More reorganising of interpreter code
2023-06-09 23:06:54 +01:00
Oliver Payne
edb09836b3
Start reorganising interpreter
2023-06-08 23:00:30 +01:00
Oliver Payne
e48f428e96
Complete up to 4.26
2023-06-05 22:27:18 +01:00
Oliver Payne
d767fcb1a0
Implement 4.24
...
This redefines eval in each of the interpreters to be a specific
version.
2023-05-18 22:35:01 +01:00
Oliver Payne
84260132b0
Complete exercise 4.23
2023-05-17 22:53:05 +01:00
Oliver Payne
0cfc6a09aa
Implement let in the analysing interpreter (exercise 4.22)
...
Base the analysing interpreter on the data driven interpreter instead
of the standard ch4 one, as there is more implemented there already.
Bypass the scanning out of internal definitions for simplicity.
2023-05-11 22:55:06 +01:00
Oliver Payne
cce00f9a9c
Add racket version of analyzing mceval
2023-05-08 20:17:05 +01:00
Oliver Payne
42f5cad05d
Completed to exercise 4.21
2023-05-05 23:02:42 +01:00
Oliver Payne
45062e6f9d
Complete exercise 4.19
2023-05-05 16:45:41 +01:00
Oliver Payne
a5ba2798b2
Complete exercise 4.18
2023-05-05 16:33:15 +01:00
Oliver Payne
cb85477c2b
Complete exercise 4.17
2023-05-04 22:57:56 +01:00
Oliver Payne
288e81e034
Complete exercise 4.16 (scanning out internal definitions)
2023-05-03 22:46:24 +01:00
Oliver Payne
79ca3ce298
Fix bug in named-let? predicate
...
This was falsely identifying (let () 1) as a named let.
2023-05-03 22:44:23 +01:00
Oliver Payne
39ba66ba44
First cut of scan-out define algorithm
...
I think this can be done with a single iteration.
2023-04-30 23:03:37 +01:00
Oliver Payne
37d67d1e3d
Complete exercise 4.15
2023-04-28 22:58:50 +01:00
Oliver Payne
543a06efa2
Add make-unbound! (Exercise 4.13)
2023-04-27 19:54:58 +01:00
Oliver Payne
c6af81de5e
First cut of make-unbound! for Exercise 4.13
...
This only removes a single binding in the environment.
2023-04-26 23:05:48 +01:00
Oliver Payne
64510a80f0
Abstract iteration from variable operations (exercise 4.12)
2023-04-26 18:55:31 +01:00
Oliver Payne
e0b7b9490c
Exercise 4.11: change frame representation to list of pairs
2023-04-18 22:56:43 +01:00
Oliver Payne
1784534c39
Add implementation of for (Exercise 4.9)
2023-04-11 22:32:56 +01:00
Oliver Payne
658d65b7a4
Fix dispatch table entry for begin
2023-04-11 22:02:23 +01:00
Oliver Payne
aa58650354
Complete exercise 4.8 (named let)
2023-04-10 22:25:35 +01:00
Oliver Payne
0e716bd0cb
Complete exercise 4.7 (let*)
2023-04-02 21:07:25 +01:00
Oliver Payne
ada3271a84
Complete 4.6: let derived form
2023-04-02 20:03:57 +01:00
Oliver Payne
2e7c3dd240
Tidy ups for and / or
2023-04-02 20:03:12 +01:00