Features


LispPad's Scheme language provides support for the following core language features, many of which are derived from the R7RS (small) Scheme standard:

  • Modules via R7RS libraries
  • Hygienic macros based on the syntax-rules standard
  • First-class environments
  • call/cc, dynamic-wind and exceptions
  • Dynamically-scoped paramaters
  • Multiple return values
  • Delayed execution via promises and streams
  • Support for the full numerical tower consisting of arbitrary size integers, rationals, real numbers, and inexact complex numbers.
  • Unicode strings and characters
  • Vectors and bytevectors
  • Text and binary ports
  • R7RS-compliant records
  • R6RS-compliant hashtables
  • R6RS-compliant enumerations

Incompatibilities


LispPad is incompatible or incomplete with respect to the following R7RS features:

  • Lists are immutable. Mutable cons-cells are supported in a way similar to Racket.
  • Datum comments introduced via #; do not always work as expected.

Included Libraries


LispPad supports all standard R7RS libraries:

  • (scheme base)
  • (scheme case-lambda)
  • (scheme complex)
  • (scheme cxr),
  • (scheme eval)
  • (scheme file)
  • (scheme inexact)
  • (scheme lazy)
  • (scheme load)
  • (scheme process-context)
  • (scheme read)
  • (scheme repl)
  • (scheme time)
  • (scheme write)
  • (scheme r5rs)

LispPad also includes all the LispKit libraries:

LispPad currently comes with two LispPad-specific libraries providing a native integration of drawings defined via (lispkit draw) and (lispkit draw turtle) and a means to script the application:

The following SRFI (Scheme Request for Implementation) libraries have been ported to LispPad and are included in the latest LispPad distribution:

The source code of the Scheme interpreter and the included libraries has been open-sourced and published at GitHub. Example code and the Scheme sources of the included libraries can be found here.

It is also possible to access the source code from within LispPad. Pressing option while opening the File menu will reveal a menu item "Open LispKitā€¦" which provides access to the LispKit source code bundled with LispPad. Similarly, pressing control while opening the File menu will reveal a menu item "Open LispPad..." for accessing the LispPad-specific code, e.g like the LispPad prelude.