Back to index

LispMe todo list and random thoughts

Non-standard define

The implementation of define differs from standard Scheme, all names are resolved during compilation.

Macro/eval

The implementation of the macro system is a kludge. (I'm not talking hygienic macros, i.e. define-syntax now!) Macros are expanded by invoking the VM during compilation. To allow interrupting the VM on a single-threaded OS, compotation procedes in "bursts" of STEPS_PER_TIME_SLICE=1600 steps at once, after which the GUI is re-enabled to accept Break events. However, during compilation no events are accepted, so after a given maximum number of steps macro expanding is aborted. I'd be happy when somebody could give a cleaner implementation here.

Macros/define

Macros can't currently expand to top-level define-expressions and other macro definitions, which inhibits writing macros like defun or define-structure (or implementing the hygienic macro system of R5RS via macro)

DB2 interface

Lately IBM released DB2 Everywhere, a tiny SQL relational database system for the Pilot. I'd like to be able to access those databases (via standard SQL!) with LispMe, but unfortunately IBM provides only libraries for Codewarrior, not for GCC :-( I imagine interfacing LispMe with SQL by a single procedure (sql statement), which takes the SQL statement as a string and returns either the SQLSTATE or (in case of an SQL SELECT statement a list of tuples (lists or vectors). Don't forget the datatype mapping between Scheme and SQL.

Version 2.7 includes support for HanDBase, which is far more popular than DB2 support.

require

A kind of require/provide mechanism for loading memos would be nice.

Supporting more UI elements

Support for tables, sliders, and gadgets is missing, mainly because of the amount of glue code required, especially for the table callback interface.

Implementing the top-level in LispMe

LispMe's user interface is currently written in C. Another possibility would be writing the whole interface in LispMe itself, as basic UI functions are supported in LispMe. This would require some low-level primitives (error-handler, timer, memory manager) and at least an "emergency shell", if the UI code crashes.

Better demo applications

I'm still waiting for the breath-taking hyper demo program written in LispMe which shows all the PocketC/cBasPad/Quartus Forth etc. users why Scheme is a better language ;-)
Seriously, a graphing, symbolic calculator (HP-28 or such like) shouldn't be too hard to be implemented in LispMe and is quite demanded, too, if you consider the requests in comp.sys.palmtops.pilot.

Speed

Is this an issue? In comparison to other interpreted languages LispMe occupies a middle position, but it has no chance against languages compiling to 68000 machine code (OnboardC, Quartus). Would this be in popular demand? See next item, too.

Stand-alone apps

Is creating stand-alone apps (preferrably in machine code, like Quartus Forth does) in LispMe an issue? Or should LispMe stay aimed to its original goal, prototyping and testing algorithms on the fly?

Installation tool for demos

Installing the demo programs is more work than necessary. A simple .prc file including all demos as string resources could install the memos (and create the Lisp category) automatically and remove itself afterwards.