EmuLisp can be operated through two different front ends: the new EmuLisp Console or the Old Tool. The Console is intended to work somewhat like a normal REPL console, with a few extra features. The Old Tool shows how I started this project. Before I wrote the parser, I entered the Lisp code in a JSON format. The Old Tool also shows you a list of the currently implemented PicoLisp functions.
do it in different ways. In the Old Tool you'll see a field and a button "Run Lisp file".
In the Console you can drag and drop the file(s) onto the console section on the left, if you are
lucky to use the right kind of browser. At the moment, Firefox may be the only browser where this works.
In both front ends you may also load files using the load function:
The current version of Chrome does not allow loading files from your disk in this way, unless you start Chrome from the command line with the
Type about:version on the URL line in Chrome for a hint on how to do that.
For reference documentation on the implemented PicoLisp functions, you should use the original PicoLisp documentation.
Some Console features
The lines that are showing up in the upper part have different background colors depending on their "source" or function. Expressions entered in the lower part are echoed with a light gray background. Data printed using functions like prin and prinl get a light blue background. If the last character printed was a newline, this is indicated by a blue border-bottom. Evaluation results get a light green background and a green border-bottom. Warnings appear with a yellow background, and errors with a red background, both with a thick border-left. If you drag and drop a file onto the console, the file name will show with light gray background and a thick border-left.
Immediately after an expression in the expression field has been evaluated, the content of the
field labelled "Expression to monitor" will also be evaluated and the result shown as a tree graph.
This requires canvas support.
You may at any time refresh the tree graph by clicking on the canvas. You may also use this canvas
for doing other kind of graphics. A not yet completed library of canvas functions is provided.
If you run EmuLisp off your local disk (and you use a browser that allows access to local files),
you can try this in the Console:
(load "lib/cv.js" "misc/drawLogo.l")
A mechanism that will give you a warning when you try to leave or close the Console is implemented. Use the Prefs dialog to enable it.
The Console does not work very well with Internet Explorer, except IE9 which looks promising.
Some implementation details
When you define your own functions, you may currently only use these patterns:
(de foo (X Y ...) <prog>), i.e. all arguments evaluated
(de foo @ <prog>), i.e. a variable number of evaluated arguments
(de foo X <prog>), i.e. a variable number of unevaluated arguments
Circular lists may be entered using the
(a b c .) notation, and they may also be
printed that way. It is, however, not difficult to include such circular lists into other
structures so that the simple "circular detector" fails to detect. You may know the result.
As long as you stick to "safe circular lists", they shall cause no problem as argument in the
length function, or in the expression monitor.
Jon Kleiser, 02-Feb-2011
- λ -