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.