Things We Need deep recur Recur is working when nested in additional forms BUT if a loop is nested in another loop, the inner loop doesn’t recur properly. This was a stack overflow bug! Lame. We need to address excessive stack usage Less PTRMEM used. We could use the top 4 bits of the pointers as counters, reusing each pointer up to 15 times This means O(n) refer() Also makes dereferencing hairier Perhaps we could write a simple pre-preprocessor script? Convert @ptr into *(ptr & 0x0FFF) ? interrupt support should be able to attach a function to an interrupt more useful if functions are closures? keyboard interrupts? computer-side REPL shim use readline to hand character buffering could potentially fix flakiness of Uno serial would allow Emacs inferior-lisp could host documentation system? if in computer-side REPL, wouldn’t need to be on-device may also be able to point at source file to “load” the entire file Could do form validation and issue warnings Could have extra functionality like (doc …) better error handling/reporting macro system syntax-quote (`), unquote (~), unquote-splicing (~@) special operators do fexpr? we could write the macro system with this builtin macros (when macro system ready) control-flow when dolist logic and or numerics/bit ops bit-shift-* and friends Stop binding function-position valid symbols to themselves in the environment This is an unnecessary waste of CONSMEM We have a finite set of pre-defined symbols with functionality, so we can deal with them in C We shouldn’t have to get a binding for a symbol we already know about to dispatch its execution Perhaps we should look for one anyway though, in case it has been redefined. If one isn’t found, we drop to compiled-in functionality documentation and distribution build instructions for mac, linux deploy instructions for popular arduinos example code (see Arduino examples) Emacs, other editor inferior-lisp instructions (Sublime, vim?) Things We Might Need package/namespace support it’s common in Arduino-land to distribute libraries; would make this easier do we want namespaces, and how would they be implemented? too much overhead? jump/break/non-local returns see also exceptions and unwind-protect exceptions see also: unwind-protect in CL atoms for use with interrupts and callbacks prevent clobbering of intermediate values can we leverage a machine instruction for this? lexical scope capturing callbacks for wiring to interrupts - useful? possibly too expensive in space stack-friendly eval deeply-nested code may blow stack when eval’d; audit eval better GC List Processing in Real Time on a Serial Computer by Henry Baker AIM 444 “LISP Machine Progress Report” compiler computer-hosted would allow us to compile library functions and macros slimmer onboard runtime hash table/dictionary literal support? too much overhead?