John,
1. Rob's
last message but one regards
XBLisp and concerns the instruments (user-defined procedures a.k.a. lambdas) that will help him re-create in
XBLisp the BASIC ASCII Mandelbrot which I sent him yesterday. Such lambdas are available in Scheme in the form of library procedures outside the scope of its basic vocabulary. So we agreed to keep them in a separate
lib.lisp file either loadable before an interactive session or includable at the beginning of a .lisp file with a
(load 'lib.lisp) directive.
2. I've finished my work for today -- I got too tired and inattentive.
3. I did't add the multi-file load option yet. I think we can live without it for now because files can be added to other files in the form of includes as described in Item 1 above.
4. I succeeded in splitting the main parts of XBLisp entirely and the script should be fully working now. At least it works for me here. The only place where GoSub's still stay is the large LispEval() procedure that starts somewhere in the middle of the file. These GoSub's are entirely intrinsic to LispEval() and can be turned into standalone Function's very easily. They aren't referenced anywhere else except within LispEval() itself.
5. This code will stay compatible with OxyLISP.
6. I have optimized IF conditionals wherever possible to speed up evaluation a little.
7. Please do not try to re-arrange the code (it is position-dependent) nor re-write the remaining GoSub's into Function's yourself. You don't have a clear idea yet of how error propagation from deeply nested recursion works so you may break it easily. Let me finish it off myself tomorrow.
8. Please recompile a new 32-bit SBLisp.exe and post it here for Rob and me to use in our future tests.
9. I will label my comments in accordance with your suggestion tomorrow. Apart from that, formating should be compliant with your requirements.
Thank you. I hope you'll like the results.
[EDIT] Attachment deleted due to a Linux bug