Oliver Payne
3d5db17a33
Add racket version of original 8-queens for comparison
2023-11-12 22:29:12 +00:00
Oliver Payne
a1fb98ddad
Tidy up code and add second part of exercise 4.42
2023-11-09 23:06:19 +00:00
Oliver Payne
1f0a3948b2
Fix an error in ambeval that cleared the environment after each problem
2023-11-09 21:55:49 +00:00
Oliver Payne
d6591f3169
Better solution for fathers and daughters
2023-11-09 20:04:00 +00:00
Oliver Payne
a98257368e
First cut at fathers-daughters
...
Not quite working yet, but feels close
2023-11-07 23:14:09 +00:00
Oliver Payne
23278d7ad4
Add exercise 4.41
2023-11-06 22:32:58 +00:00
Oliver Payne
6e6c4dd8d0
Add exercise 4.40
2023-11-05 22:35:10 +00:00
Oliver Payne
d794e64d06
Completed up to exercise 4.40
2023-11-04 21:22:55 +00:00
Oliver Payne
6df1a27539
Add primitive timing to ambeval
...
This shows the cumulative number of milliseconds in the current problem
2023-11-04 21:16:57 +00:00
Oliver Payne
a457194e11
Refactoring
2023-11-04 21:16:20 +00:00
Oliver Payne
fd1d3682f3
Move timing out into a separate module
2023-11-04 21:13:32 +00:00
Oliver Payne
a16df8cca2
Add exercise 4.38
2023-11-01 22:57:51 +00:00
Oliver Payne
34400a1bc4
Add amb utilities that are loaded at startup
2023-11-01 22:50:31 +00:00
Oliver Payne
f769d990ec
Add exercise 4.37
2023-11-01 22:41:55 +00:00
Oliver Payne
0e99db8285
Add exercise 4.36 Pythagorean triples
2023-10-24 23:04:28 +01:00
Oliver Payne
5002cfe4aa
Add exercise 4.35
2023-10-20 17:30:57 +01:00
Oliver Payne
32988a58a2
Initial integration of racket version of ambeval
...
Some of this should probably be refactored in the same way the other
evaluators were.
2023-10-19 23:01:00 +01:00
Oliver Payne
c2f671c8dd
Add test integral from the book
2023-10-19 22:29:06 +01:00
Oliver Payne
255723b1fe
Fix bug where lazy pairs used excessive amounts of memory
...
This change makes cons a procedure created at startup, capturing the
environment once rather than each time a pair is created.
2023-10-19 22:16:25 +01:00
Oliver Payne
a358de17d3
Exercise 4.34: Pretty printing of lazy pairs
...
This change makes cons a special form that returns a tagged
procedure. This tag is used to distinguish it from normal procedures
when printing out the pair. Apply is modified to skip over the tag
and apply the procedure as normal.
2023-10-14 22:42:22 +01:00
Oliver Payne
51d71bbfb5
Exercise 4.33: transform quoted pairs into cons for lazy lists
...
This turns a quoted expression into one or more conses. If these are
defined to be the lazy versions, then we will get lazy lists.
2023-09-09 23:19:11 +01:00
Oliver Payne
01cb1c69dd
Use lazy-eval rather than actual-value for stored programs
...
We don't care about the actual value, because these are just defines,
so we only need their side effects.
2023-09-09 23:17:56 +01:00
Oliver Payne
d9f84f1ca1
Add tracing for syntax
2023-09-03 22:56:50 +01:00
Oliver Payne
f5ca407f3e
Add lazy lists from the book
2023-09-01 23:15:30 +01:00
Oliver Payne
c5418454ed
Add exercise 4.28
2023-08-14 22:58:10 +01:00
Oliver Payne
9eb77c7e02
Add files provided with the book
...
Just in case they become unavailable later.
2023-08-13 22:32:53 +01:00
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