"Footprints at the Beach" Hansueli Krapf CC-BY-SA 3.0

CircuitScheme is quite a nice implementation of a small, but very Scheme-like language. It's a small subset of a full Scheme, but all the crucial parts are present and it's easy to add more. That, in itself, is one of the hallmarks of the Lisp family of languages: it's easy to extend the language in the language itself. This is a big reason for the evolution that Lisp underwent and the diversity of dialects that were created.

So one path forward is to extend the language to be more appropriate for microcontroller work, taking advantage of the CircuitPython substrate.

Another area of exploration is to improve the REPL. It's very basic at the moment, and more appropriate for its use as a file loader: the repl function gets used by load to essentially type in code from a file. It needs more editing capabilities.

UPDATE: CircutiScheme has an expanded REPL interface now. See this guide for details. TL;DR it gives you what you'd expect for REPL editing.

A related area is the addition of debugging capabilities.

Finally, more wrappers are needed to support more hardware. As we have seen, it's a fairly simple matter to create a wrapper that imports the CircuitPython device driver and exposes the functions required to let it be used from CircuitScheme.

In Closing

CircuitScheme is interesting not only because it's a Lisp running comfortably on SAMD51 boards, but because it does so within the CircuitPython environment, leveraging the benefits that provides.

This guide was first published on Feb 14, 2019. It was last updated on Feb 14, 2019.

This page (Next Steps) was last updated on Sep 12, 2021.

Text editor powered by tinymce.