Powerful Scheme interpreter in JavaScript | LIPS Scheme

2 min read Original article ↗

LIPS Scheme is a powerful lisp interpreter written in JavaScript. The aim of the project is to create a fully R7RS-compliant Scheme in JavaScript.

The name LIPS is recursive acronym which stands for LIPS Is Pretty Simple. Over time the project may no longer be that simple in implementation but it always be LIPS.

Most important features of LIPS:

  • Great integration with JavaScript. You can use any JS library out of the box.
  • Asynchronous execution (auto resolving of promises with optional promise quotation).
  • Literal regular expression.
  • Functional helpers (inspired by RamdaJS and Lodash).
  • Possibility modify the parser at runtime (add new syntax, similar to vectors and object).
  • Possibility to set representation of new data types for write and display. With parser extensions you can make new data types have different syntax and still be homoicoic.
  • Small JavaScript core with Standard Library implemented in basic Scheme.
  • Full support of Unicode and Emoji.
  • Support for SXML, that allow to write JSX e.g. with Preact or React apps.
  • I/O Ports supports in browser with BrowserFS.
  • Full numerical tower and Big Integer support (still not 100% fully unit tested).
  • Powerful introspection (similar to the one in Python).
  • Auto formatting of lisp code (pretty print).
  • Lisp/hygienic macros and macroexpand.
  • Builtin help system.