Fixed upside-down formatting in README.
[scheme.forth.jl.git] / README.md
index 52b4b6f..62f932b 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
 scheme.forth.jl
 scheme.forth.jl
----------------
+===============
 
 A hobby Scheme interpreter for FORTH 83. Specifically it is targeted at
 [forth.jl](http://github.com/tgvaughan/forth.jl) which is an implementation of
 
 A hobby Scheme interpreter for FORTH 83. Specifically it is targeted at
 [forth.jl](http://github.com/tgvaughan/forth.jl) which is an implementation of
@@ -8,22 +8,21 @@ life as a fairly direct port of Peter Micheaux's [Bootstrap
 Scheme](https://github.com/petermichaux/bootstrap-scheme) (as described in
 [this wonderful series of blog
 posts](http://peter.michaux.ca/articles/scheme-from-scratch-introduction)) from
 Scheme](https://github.com/petermichaux/bootstrap-scheme) (as described in
 [this wonderful series of blog
 posts](http://peter.michaux.ca/articles/scheme-from-scratch-introduction)) from
-C to forth, but also includes variadic compound function support, mark-sweep
-garbage collection, quasiquotation, and a basic (non-hygienic) macro
-system.
+C to forth, but also includes:
 
 
-In future, I plan to also implement a more complete numerical tower to bring it closer to
-[R5RS](http://www.schemers.org/Documents/Standards/R5RS/).
-
-The goal is for the interpreter to be complete enough to be used to complete
-the majority of the exercises found in [SICP](http://sarabander.github.io/sicp/).
+* variadic compound function support,
+* pre-evaluation syntactic analysis,
+* mark-sweep garbage collection,
+* quasiquotation,
+* a basic (non-hygienic) macro system and
+* first-class continuations via `call-with-current-continuation`.
 
 Running the interpreter
 
 Running the interpreter
-=======================
+-----------------------
 
 
-To run this Scheme interpreter, first open Julia from the src directory contained
-in this repository.  If you've not done so already, install forth.jl using the
-following command:
+To run this Scheme interpreter, first open Julia (**version >=0.6**) from the src
+directory contained in this repository.  If you've not done so already, install
+forth.jl using the following command:
 
     julia> Pkg.clone("https://github.com/tgvaughan/forth.jl")
 
 
     julia> Pkg.clone("https://github.com/tgvaughan/forth.jl")
 
@@ -54,7 +53,7 @@ At this point you can start entering Scheme commands.  For example,
     ; 120
 
 Metacircular Evaluator
     ; 120
 
 Metacircular Evaluator
-======================
+----------------------
 
 Of course, one of the things you can do in Scheme (or of course any programming
 language, this is the fundamental thing) is implement an interpreter for
 
 Of course, one of the things you can do in Scheme (or of course any programming
 language, this is the fundamental thing) is implement an interpreter for
@@ -75,8 +74,15 @@ You'll then be greeted by the following prompt:
     ;; M-Eval input:
 
 At this point you can start entering Scheme commands... but be prepared to wait
     ;; M-Eval input:
 
 At this point you can start entering Scheme commands... but be prepared to wait
-a _long_ time for the result.  For instance, the following example from SICP
-defines and demonstrates a recursive list append procedure:
+a while for each result.  After all, when evaluating commands in the MCE you are
+running a program in a Scheme interpreter running inside another Scheme
+interpreter which is itself running on a Forth system that is implemented atop
+a virtual register machine running in the Julia numerical computing
+environment.  **That's four levels of abstraction more than a native Julia
+program experiences**, so some delay is to be expected!
+
+For instance, the following example from SICP defines and demonstrates a
+recursive list append procedure:
 
     (define (append x y)
        (if (null? x)
 
     (define (append x y)
        (if (null? x)
@@ -93,13 +99,10 @@ defines and demonstrates a recursive list append procedure:
      ;;; M-Eval value:
      (a b c d e f)
 
      ;;; M-Eval value:
      (a b c d e f)
 
-Be prepared to wait 20 min or more for the final result to be printed.  (Given
-that at this point we have a program running in a Scheme interpreter running
-inside another Scheme interpreter which is itself running on a Forth system
-that is implemented in Julia, this should not be a surprise.)
+You may have to wait a minute or so for the final result to be printed.
 
 License
 
 License
-=======
+-------
 
 This software is free (as in freedom) and is distributed under the terms
 of version 3 of the GNU General Public License.  A copy of this license
 
 This software is free (as in freedom) and is distributed under the terms
 of version 3 of the GNU General Public License.  A copy of this license