Tim Vaughan [Tue, 4 Jul 2017 12:52:32 +0000 (22:52 +1000)]
Factored apply out of application-executor
Tim Vaughan [Sun, 2 Jul 2017 13:00:08 +0000 (01:00 +1200)]
Analyzed macros working.
Tim Vaughan [Tue, 27 Jun 2017 20:47:49 +0000 (08:47 +1200)]
Replaced old eval with "expand analyze evaluate-eproc"
Compound procedures still not working.
Tim Vaughan [Tue, 27 Jun 2017 20:19:37 +0000 (08:19 +1200)]
Merged macro quasiquote into analyze.
Tim Vaughan [Sun, 25 Jun 2017 21:08:59 +0000 (09:08 +1200)]
Library functioning using new quasiquote.
New macro quasiquote is much slower than previous primitive
implementation, but more elegant. Syntactic analysis should
mitigate some of this problem. Currently shares limitation
of primitive implementation in that quasiquotations can't be
reliably nested.
Tim Vaughan [Sat, 24 Jun 2017 10:16:32 +0000 (22:16 +1200)]
Quasiquote/unquote/unquote-splicing macro working
Tim Vaughan [Sat, 24 Jun 2017 03:41:09 +0000 (15:41 +1200)]
quasiquote/unquote implemented
(no unquote-splicing yet)
Tim Vaughan [Fri, 23 Jun 2017 01:29:08 +0000 (13:29 +1200)]
Removed quasiquote code.
Tim Vaughan [Wed, 21 Jun 2017 03:14:53 +0000 (15:14 +1200)]
Primitive procedure evaluation working.
Tim Vaughan [Wed, 21 Jun 2017 02:42:08 +0000 (14:42 +1200)]
Draft implementation of application analysis.
Tim Vaughan [Wed, 21 Jun 2017 00:38:51 +0000 (12:38 +1200)]
Buggy implementation of analyze-lambda.
Tim Vaughan [Tue, 20 Jun 2017 23:48:07 +0000 (11:48 +1200)]
IF analysis working.
Tim Vaughan [Tue, 20 Jun 2017 22:59:02 +0000 (10:59 +1200)]
Working on analyzer.
Tim Vaughan [Mon, 19 Jun 2017 10:42:03 +0000 (22:42 +1200)]
Replaced header in library file.
Tim Vaughan [Mon, 19 Jun 2017 10:35:28 +0000 (22:35 +1200)]
Improved error system.
Tim Vaughan [Mon, 19 Jun 2017 10:27:16 +0000 (22:27 +1200)]
Updated readme.
Tim Vaughan [Mon, 19 Jun 2017 09:32:43 +0000 (21:32 +1200)]
Macro expansion working properly.
begin is now a library form too.
Tim Vaughan [Tue, 13 Jun 2017 12:14:20 +0000 (00:14 +1200)]
Full draft of macro expander in place.
Tim Vaughan [Mon, 12 Jun 2017 11:40:12 +0000 (23:40 +1200)]
Added expression sequences to macro expander.
Tim Vaughan [Mon, 12 Jun 2017 11:33:27 +0000 (23:33 +1200)]
Added define and set! cases to the macro expander.
Tim Vaughan [Mon, 12 Jun 2017 09:57:51 +0000 (21:57 +1200)]
First tentative macro expansion working.
Tested by adding macro definition of procedural form of define.
Actually works for defining higher order functions too! For free!
Tim Vaughan [Mon, 12 Jun 2017 07:25:20 +0000 (19:25 +1200)]
Added stubs for macro expansion words.
Tim Vaughan [Mon, 12 Jun 2017 07:23:07 +0000 (19:23 +1200)]
Added macro expansion skeleton.
Tim Vaughan [Sun, 11 Jun 2017 10:49:47 +0000 (22:49 +1200)]
Disabled existing macro expansion.
Tim Vaughan [Wed, 31 May 2017 09:39:52 +0000 (21:39 +1200)]
Implemented let*
Tim Vaughan [Mon, 1 May 2017 09:15:43 +0000 (21:15 +1200)]
Updated README.
Tim Vaughan [Mon, 1 May 2017 06:22:50 +0000 (18:22 +1200)]
Removed debug code from MCE.
Tim Vaughan [Mon, 1 May 2017 06:19:47 +0000 (18:19 +1200)]
Fixed bug in MCE. Now working!
Tim Vaughan [Mon, 1 May 2017 06:19:24 +0000 (18:19 +1200)]
Improving error reporting.
Tim Vaughan [Sat, 29 Apr 2017 02:18:22 +0000 (14:18 +1200)]
Solved hygiene problem, MCE runs (VERY slowly)
Tim Vaughan [Fri, 28 Apr 2017 11:08:54 +0000 (23:08 +1200)]
Improved let macro hygiene.
Tim Vaughan [Fri, 28 Apr 2017 10:34:32 +0000 (22:34 +1200)]
Identified prob with MCE: macro hygiene.
Tim Vaughan [Sun, 23 Apr 2017 12:26:14 +0000 (00:26 +1200)]
Debugging MCE.
Tim Vaughan [Sun, 23 Apr 2017 11:00:06 +0000 (23:00 +1200)]
Forgot to tell GC that ports are now pair-like.
Impotant, because otherwise their contents aren't marked
by the mark/sweep algorithm and wind up getting clobbered.
Tim Vaughan [Sun, 2 Apr 2017 00:51:18 +0000 (12:51 +1200)]
Started porting metacircular evaluator from SICP.
Tim Vaughan [Sun, 12 Mar 2017 04:20:26 +0000 (17:20 +1300)]
Implemented some port input primitives.
Tim Vaughan [Wed, 1 Mar 2017 01:58:59 +0000 (14:58 +1300)]
Added some port and string primitives.
Tim Vaughan [Sun, 26 Feb 2017 01:14:11 +0000 (14:14 +1300)]
Improved string parser, added license.
Previous string parser used recursion to make it easy to cons
up the character list. Unfortunately this led to stack overflows
for longer strings (such as the license agreement!). It is now
replaced with a loop and calls to set-cdr!.
Tim Vaughan [Tue, 20 Dec 2016 07:05:56 +0000 (20:05 +1300)]
Primitive ratnum operations implemented.
Tim Vaughan [Mon, 19 Dec 2016 18:50:27 +0000 (07:50 +1300)]
Implemented fix:gcd.
Tim Vaughan [Fri, 16 Dec 2016 11:20:42 +0000 (00:20 +1300)]
Can now make it through first chapter of SICP.
Tim Vaughan [Fri, 16 Dec 2016 11:07:56 +0000 (00:07 +1300)]
Added hacky fixnum division op.
Now we can get through at least the first few pages of SICP.
Tim Vaughan [Fri, 16 Dec 2016 10:53:28 +0000 (23:53 +1300)]
Fleshing out numerical library.
Tim Vaughan [Fri, 16 Dec 2016 09:12:44 +0000 (22:12 +1300)]
Completed flonum primitives.
Tim Vaughan [Sun, 11 Dec 2016 10:45:05 +0000 (23:45 +1300)]
Added most flonum primitives.
Tim Vaughan [Sun, 11 Dec 2016 09:21:19 +0000 (22:21 +1300)]
flonum parsing works
some rounding errors remain, probably to do with printing.
Tim Vaughan [Sun, 11 Dec 2016 01:52:08 +0000 (14:52 +1300)]
Added floating point printing words.
Tim Vaughan [Sat, 3 Dec 2016 00:52:58 +0000 (13:52 +1300)]
Added NOT and fixed PROCEDURE?
Tim Vaughan [Mon, 14 Nov 2016 01:32:46 +0000 (14:32 +1300)]
Added draft readflonum.
Tim Vaughan [Sun, 13 Nov 2016 10:45:11 +0000 (23:45 +1300)]
Added some more float words.
Tim Vaughan [Sun, 13 Nov 2016 01:40:03 +0000 (14:40 +1300)]
Redefined numeric procs in terms of fixnum prims.
Tim Vaughan [Mon, 7 Nov 2016 09:53:54 +0000 (22:53 +1300)]
Moved source to src directory.
Tim Vaughan [Mon, 7 Nov 2016 09:50:20 +0000 (22:50 +1300)]
Updated README.
Tim Vaughan [Sun, 6 Nov 2016 08:53:01 +0000 (21:53 +1300)]
Added (length)
Tim Vaughan [Sun, 6 Nov 2016 08:41:33 +0000 (21:41 +1300)]
Fixed AND and OR implementations
Tim Vaughan [Sun, 6 Nov 2016 05:06:06 +0000 (18:06 +1300)]
Implemented and and or as macros.
Tim Vaughan [Sun, 6 Nov 2016 03:53:35 +0000 (16:53 +1300)]
Implemented cond as macro.
Tim Vaughan [Sun, 6 Nov 2016 00:27:32 +0000 (13:27 +1300)]
While form now uses let.
Tim Vaughan [Sun, 6 Nov 2016 00:12:59 +0000 (13:12 +1300)]
Implemented let as macro.
Tim Vaughan [Sat, 5 Nov 2016 22:01:34 +0000 (11:01 +1300)]
Quasiquote fix.
Tim Vaughan [Sat, 5 Nov 2016 21:09:57 +0000 (10:09 +1300)]
Fixed if form when no alternative.
Tim Vaughan [Sat, 5 Nov 2016 08:30:29 +0000 (21:30 +1300)]
Implemented unquote-splicing
Tim Vaughan [Sat, 5 Nov 2016 05:50:07 +0000 (18:50 +1300)]
quasiquote and unquote working.
Tim Vaughan [Sat, 5 Nov 2016 01:08:38 +0000 (14:08 +1300)]
Updated readme.
Tim Vaughan [Sat, 5 Nov 2016 01:05:17 +0000 (14:05 +1300)]
Working on quasiquote.
Tim Vaughan [Fri, 4 Nov 2016 23:51:46 +0000 (12:51 +1300)]
Added (error)
Tim Vaughan [Fri, 4 Nov 2016 23:51:44 +0000 (12:51 +1300)]
Fixed bug in (display)
Tim Vaughan [Fri, 4 Nov 2016 23:51:34 +0000 (12:51 +1300)]
Added forth-level exception handling to repl.
Tim Vaughan [Thu, 3 Nov 2016 19:51:09 +0000 (08:51 +1300)]
Added exception handling words.
Tim Vaughan [Tue, 1 Nov 2016 08:56:22 +0000 (21:56 +1300)]
Implemented read-level portion of quasiquote forms.
Tim Vaughan [Tue, 1 Nov 2016 08:46:46 +0000 (21:46 +1300)]
Updated README.
Tim Vaughan [Tue, 1 Nov 2016 08:44:18 +0000 (21:44 +1300)]
Very basic macros working.
Tim Vaughan [Tue, 1 Nov 2016 08:38:20 +0000 (21:38 +1300)]
Implemented (reverse list).
Tim Vaughan [Tue, 1 Nov 2016 08:35:16 +0000 (21:35 +1300)]
Simplified iterative define expansion.
Tim Vaughan [Tue, 1 Nov 2016 07:55:03 +0000 (20:55 +1300)]
Allowed recursive define expansion.
Tim Vaughan [Tue, 1 Nov 2016 07:54:36 +0000 (20:54 +1300)]
Simplified apply.
Tim Vaughan [Tue, 1 Nov 2016 07:54:24 +0000 (20:54 +1300)]
Apply now linked to procedure instead of symbol.
Tim Vaughan [Mon, 31 Oct 2016 11:59:32 +0000 (00:59 +1300)]
Added apply primitive and used it to implement append.
Tim Vaughan [Mon, 31 Oct 2016 10:50:23 +0000 (23:50 +1300)]
Added display primitives.
Tim Vaughan [Mon, 31 Oct 2016 02:05:58 +0000 (15:05 +1300)]
Added testing code back in.
Tim Vaughan [Sun, 30 Oct 2016 03:37:16 +0000 (16:37 +1300)]
Nutting out macro issues.
Tim Vaughan [Sun, 30 Oct 2016 01:12:00 +0000 (14:12 +1300)]
Finished draft macro implementation
Tim Vaughan [Thu, 27 Oct 2016 21:25:21 +0000 (10:25 +1300)]
Added lookup-macro and make-macro.
Tim Vaughan [Thu, 27 Oct 2016 12:59:20 +0000 (01:59 +1300)]
Implementing macros.
Tim Vaughan [Sat, 29 Oct 2016 02:09:05 +0000 (15:09 +1300)]
Added support for variadic compound procedures.
Tim Vaughan [Thu, 27 Oct 2016 04:07:15 +0000 (17:07 +1300)]
Implemented begin. Added none object for empty returns.
Tim Vaughan [Thu, 27 Oct 2016 03:46:09 +0000 (16:46 +1300)]
Fixed stack hygiene bug.
Tim Vaughan [Thu, 27 Oct 2016 03:37:19 +0000 (16:37 +1300)]
Refactor to allow begin.
Tim Vaughan [Tue, 25 Oct 2016 04:06:08 +0000 (17:06 +1300)]
Updated README.
Tim Vaughan [Tue, 25 Oct 2016 04:03:54 +0000 (17:03 +1300)]
Added load primitive.
Tim Vaughan [Tue, 25 Oct 2016 03:57:32 +0000 (16:57 +1300)]
Load now returns result of last expression.
Tim Vaughan [Tue, 25 Oct 2016 03:46:06 +0000 (16:46 +1300)]
Implemented load word. (Now just need scheme prim.)
Tim Vaughan [Tue, 25 Oct 2016 00:27:08 +0000 (13:27 +1300)]
Updated README.
Tim Vaughan [Tue, 25 Oct 2016 00:07:53 +0000 (13:07 +1300)]
Mark-sweep garbage collection working.
Tim Vaughan [Mon, 24 Oct 2016 23:16:52 +0000 (12:16 +1300)]
Primitives are now GC-safe.
Tim Vaughan [Mon, 24 Oct 2016 03:40:52 +0000 (16:40 +1300)]
GC working when invoked between evaluations.
Now need to deal with root objects on the parameter stack.
Tim Vaughan [Sun, 23 Oct 2016 03:16:36 +0000 (16:16 +1300)]
Debugging GC.
Tim Vaughan [Sun, 23 Oct 2016 03:06:38 +0000 (16:06 +1300)]
Added OOM check.
Tim Vaughan [Sun, 23 Oct 2016 02:52:34 +0000 (15:52 +1300)]
Marked compound procedure type as pairlike.
Tim Vaughan [Sun, 23 Oct 2016 02:48:43 +0000 (15:48 +1300)]
Implemented scaffolding for mark+sweep GC.