X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=forth.jl.git;a=blobdiff_plain;f=README.md;h=612de1a3d8ede0b5fd3bd814e4182ce8d609f06f;hp=f6d18bc081ecbaef128f6511c943a52a42ef66c9;hb=87b17b0ee12c90f028186761fbb2bd5f6b4008eb;hpb=61c71638b131f86c95393f6ded9b14145a26635f diff --git a/README.md b/README.md index f6d18bc..612de1a 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,20 @@ # forth.jl A hobby implementation of a FORTH-like system atop the Julia scientific -computing language. It will never be useful for any purpose besides, perhaps, -pedagogical - although I wouldn't advise trying to learn forth by using this -code directly. A better approach is to combine reading something like Leo Brodie's -book Starting Forth with implementing your own forth. - -To a large degree this project is simply a port of the literate programming -project JonesForth from x86 assembly + forth to julia + forth, although the -mapping is in a few places non-trivial due to the fact that julia is a high -level language. A huge proportion (say 80%) of the library code in src/lib.4th -is directly copied from JonesForth. I've added some additional core definitions -and modified some of the others to be a little bit closer to the behaviour of -ANS forth (or at least FORTH 83). +computing language. It will almost certainly never be useful for any purpose +besides that which it has already fulfilled: forcing me to think quite +carefully about how forth works. + +This package owes a massive debt to the existence of the literate programming +project [JonesForth] (https://rwmj.wordpress.com/2010/08/07/jonesforth-git-repository/), +which was an amazing read. To a large degree my package is simply a port of +that project from x86 assembly + forth to julia + forth, although the mapping +is in a few places non-trivial due to the fact that julia is a high level +language. A huge proportion (say 80%) of the library code in src/lib.4th is +directly copied from JonesForth. (The fact that it was possible to reuse this +code was satisfying in its own right!) I've added some additional core +definitions and modified some of the others to be a little bit closer to the +behaviour of ANS forth (or at least FORTH 83). There's quite a lot to say about the implementation, especially due to its high-level grounding, but that will have to wait for another time. @@ -42,14 +44,13 @@ the library file. Once this is complete you can start entering forth commands: Notice that unlike other forths, forth.jl echos a newline after reading each line of standard input. This is an unfortunate side-effect of the way that -I've implemented the primitive word KEY. Hopefully I'll be able to fix this -in future. +I've implemented EXPECT. Hopefully I'll be able to fix this in future. There's an example Mandelbrot Set drawing program included in the examples -directory. To run it, you'll have to locate this directory on your system -(its location depends on what OS you happen to be using). Once found, use -the "INCLUDE" word to compile its definitions. For example, on my system -I can run the example in this way: +directory. To run it, you'll have to locate this directory on your system (its +location depends on what OS you happen to be using and how julia is installed). +Once found, use the INCLUDE word to compile its definitions. For example, on +my system I can run the example in this way: include /home/tim/.julia/v0.4/forth/examples/mandelbrot.4th Enter 'mandel' to draw the Mandelbrot Set. ok