Commit Graph

195 Commits

Author SHA1 Message Date
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