---
title: Language features
description: This page outlines the core language features supported by LispPad.
group: Language
order: 1
---

_LispPad_ is an application for developing and running Scheme code. The programming language supported
by _LispPad_ is called _LispKit_. _LispKit_ implements the following features, many of which are based on
[R7RS (small)](http://r7rs.org):

- Modules based on R7RS libraries
- Hygienic macros based on `syntax-rules`
- First-class environments
- `call/cc`, `dynamic-wind` and exceptions
- Dynamically-scoped parameters
- 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](http://www.r6rs.org)-compliant hashtables
- [R6RS](http://www.r6rs.org)-compliant enumerations
- SRFI 18-compliant multi-threading
- All R7RS (small) libraries: `(scheme base)`, `(scheme case-lambda)`, `(scheme char)`, `(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)`
- Some R7RS (large) libraries from Scheme Red and Scheme Tangerine editions:
  `(scheme bitwise)`, `(scheme box)`,  `(scheme charset)`, `(scheme comparator)`, `(scheme division)`,
  `(scheme fixnum)`, `(scheme flonum)`, `(scheme generator)`, `(scheme hash-table)`,
  `(scheme ideque)`, `(scheme list)`, `(scheme mapping)`, `(scheme red)`, `(scheme rlist)`,
  `(scheme set)`, `(scheme sort)`, `(scheme stream)`, `(scheme text)`, `(scheme vector)`
- LispKit-specific libraries:
  [`(lispkit archive tar)`](7-5-lispkit-archive-tar.html),
  [`(lispkit archive zip)`](7-5-lispkit-archive-zip.html),
  [`(lispkit base)`](7-5-lispkit-base.html),
  [`(lispkit bitset)`](7-5-lispkit-bitset.html),
  [`(lispkit box)`](7-5-lispkit-box.html),
  [`(lispkit bytevector)`](7-5-lispkit-bytevector.html),
  [`(lispkit char-set)`](7-5-lispkit-char-set.html),
  [`(lispkit char)`](7-5-lispkit-char.html),
  `(lispkit clos)`,
  [`(lispkit combinator)`](7-5-lispkit-combinator.html),
  [`(lispkit comparator)`](7-5-lispkit-comparator.html),
  [`(lispkit control)`](7-5-lispkit-control.html),
  [`(lispkit core)`](7-5-lispkit-core.html),
  [`(lispkit crypto)`](7-5-lispkit-crypto.html),
  [`(lispkit csv)`](7-5-lispkit-csv.html),
  [`(lispkit datatype)`](7-5-lispkit-datatype.html),
  [`(lispkit date-time)`](7-5-lispkit-date-time.html),
  [`(lispkit debug)`](7-5-lispkit-debug.html),
  [`(lispkit disjoint-set)`](7-5-lispkit-disjoint-set.html),
  [`(lispkit draw)`](7-5-lispkit-draw.html),
  [`(lispkit draw chart bar)`](7-5-lispkit-draw-chart-bar.html),
  [`(lispkit draw turtle)`](7-5-lispkit-draw-turtle.html),
  [`(lispkit dynamic)`](7-5-lispkit-dynamic.html),
  [`(lispkit enum)`](7-5-lispkit-enum.html),
  [`(lispkit format)`](7-5-lispkit-format.html),
  [`(lispkit graph)`](7-5-lispkit-graph.html),
  [`(lispkit gvector)`](7-5-lispkit-gvector.html),
  [`(lispkit hashtable)`](7-5-lispkit-hashtable.html),
  [`(lispkit heap)`](7-5-lispkit-heap.html),
  [`(lispkit iterate)`](7-5-lispkit-iterate.html),
  `(lispkit json)`,
  [`(lispkit list)`](7-5-lispkit-list.html),
  [`(lispkit list set)`](7-5-lispkit-list-set.html),
  [`(lispkit log)`](7-5-lispkit-log.html),
  `(lispkit logic)`,
  [`(lispkit markdown)`](7-5-lispkit-markdown.html),
  [`(lispkit match)`](7-5-lispkit-match.html),
  [`(lispkit math)`](7-5-lispkit-math.html),
  [`(lispkit math matrix)`](7-5-lispkit-math-matrix.html),
  [`(lispkit math stats)`](7-5-lispkit-math-stats.html),
  [`(lispkit math util)`](7-5-lispkit-util.html),
  [`(lispkit object)`](7-5-lispkit-object.html),
  `(lispkit pdf)`,
  [`(lispkit port)`](7-5-lispkit-port.html),
  `(lispkit prettify)`,
  [`(lispkit prolog)`](7-5-lispkit-prolog.html),
  [`(lispkit queue)`](7-5-lispkit-queue.html),
  [`(lispkit record)`](7-5-lispkit-record.html),
  [`(lispkit regexp)`](7-5-lispkit-regexp.html),
  [`(lispkit set)`](7-5-lispkit-set.html),
  [`(lispkit sqlite)`](7-5-lispkit-sqlite.html),
  [`(lispkit stack)`](7-5-lispkit-stack.html),
  [`(lispkit stream)`](7-5-lispkit-stream.html),
  [`(lispkit string)`](7-5-lispkit-string.html),
  [`(lispkit styled-text)`](7-5-lispkit-styled-text.html),
  `(lispkit sxml)`,
  `(lispkit sxml html)`,
  `(lispkit sxml xml)`,
  [`(lispkit system)`](7-5-lispkit-system.html),
  [`(lispkit system call)`](7-5-lispkit-system-os.html),
  [`(lispkit test)`](7-5-lispkit-test.html),
  [`(lispkit text-table)`](7-5-lispkit-text-table.html),
  [`(lispkit thread)`](7-5-lispkit-thread.html),
  [`(lispkit thread channel)`](7-5-lispkit-thread-channel.html),
  [`(lispkit type)`](7-5-lispkit-type.html),
  [`(lispkit vector)`](7-5-lispkit-vector.html), and
  `(lispkit wt-tree)`.
- LispPad-specific libraries:
  [`(lisppad applescript)`](7-0-lisppad-applescript.html),
  [`(lisppad draw map)`](7-0-lisppad-draw-map.html),
  `(lisppad audio)`,
  [`(lisppad location)`](7-0-lisppad-location.html),
  [`(lisppad log)`](7-5-lispkit-log.html),
  [`(lisppad speech)`](7-0-lisppad-speech.html),
  [`(lisppad system macos)`](7-0-lisppad-system.html), and
  [`(lisppad turtle)`](7-0-lisppad-turtle.html).
