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.
Tim Vaughan [Sat, 22 Oct 2016 03:43:54 +0000 (16:43 +1300)]
Working on GC.
Tim Vaughan [Wed, 12 Oct 2016 10:20:57 +0000 (23:20 +1300)]
Fixed broken realnum? procedure.
Tim Vaughan [Sat, 13 Aug 2016 11:42:25 +0000 (23:42 +1200)]
Can now read and print reals.
Tim Vaughan [Sat, 30 Jul 2016 11:55:57 +0000 (23:55 +1200)]
Working on FP arithmetic.
Tim Vaughan [Mon, 25 Jul 2016 11:06:24 +0000 (23:06 +1200)]
Working on exception handling.
Tim Vaughan [Mon, 25 Jul 2016 11:04:23 +0000 (23:04 +1200)]
Fixed TCO bug.
Tim Vaughan [Fri, 22 Jul 2016 09:15:19 +0000 (21:15 +1200)]
Fixed bug in apply.
Tim Vaughan [Fri, 22 Jul 2016 08:24:41 +0000 (20:24 +1200)]
Added tail-call optimization.
Tim Vaughan [Fri, 22 Jul 2016 08:24:39 +0000 (20:24 +1200)]
Implemented compound procedure application.
Tim Vaughan [Fri, 22 Jul 2016 08:24:35 +0000 (20:24 +1200)]
Added define syntax for procedure generation.
Tim Vaughan [Fri, 22 Jul 2016 08:24:28 +0000 (20:24 +1200)]
Implemented lambda (and λ)!
Tim Vaughan [Fri, 22 Jul 2016 08:24:23 +0000 (20:24 +1200)]
Factored out application into apply.
Tim Vaughan [Fri, 22 Jul 2016 08:24:00 +0000 (20:24 +1200)]
Working on compound procedures.
Tim Vaughan [Thu, 21 Jul 2016 10:05:12 +0000 (22:05 +1200)]
Primitive fixnum relations working.
Tim Vaughan [Thu, 21 Jul 2016 09:46:25 +0000 (21:46 +1200)]
Implemented fixnum =.
Tim Vaughan [Thu, 21 Jul 2016 08:52:17 +0000 (20:52 +1200)]
Fixed cons, set-car! and set-cdr!
Tim Vaughan [Thu, 21 Jul 2016 08:29:26 +0000 (20:29 +1200)]
Adding pair/list primitives.
Tim Vaughan [Thu, 21 Jul 2016 08:29:22 +0000 (20:29 +1200)]
Added more primitives.
Tim Vaughan [Thu, 21 Jul 2016 08:29:17 +0000 (20:29 +1200)]
eatspaces now eats comments
Tim Vaughan [Thu, 21 Jul 2016 08:29:10 +0000 (20:29 +1200)]
string->number works.