# Scheme
[Scheme](https://www.scheme.org/) is a classic programming language in the Lisp family. It emphasizes functional programming and domain-specific languages but adapts to other styles.
In LiveCodes, Scheme code runs in the browser using [BiwaScheme](https://www.biwascheme.org/), a Scheme interpreter written in JavaScript.
:::info Note
Lisp language family supported in LiveCodes includes [Common Lisp](./commonlisp.html.md), [Scheme](./scheme.html.md), [ClojureScript](./clojurescript.html.md) and [Fennel](./fennel.html.md).
:::
## Usage
LiveCodes runs Scheme code in the browser. BiwaScheme [implements](https://www.biwascheme.org/doc/features.html) most of the features of [R7RS small](https://small.r7rs.org/), including first-class continuation and tail call optimization.
**Example:**
import LiveCodes from '../../src/components/LiveCodes.tsx';
export const basicSchemeDemo = {
activeEditor: 'script',
markup: {
language: 'html',
content: `
Hello, World!
You clicked 0 times.
`,
},
style: {
language: 'css',
content: `.container,
.container button {
text-align: center;
font: 1em sans-serif;
}
.logo {
width: 150px;
}
`,
},
script: {
language: 'scheme',
content: `(let ((title "Scheme"))
(set-content! "#title" title))
(let ((counter 0))
(add-handler! "#counter-button" "click"
(lambda (ev)
(set! counter (+ counter 1))
(set-content! "#counter" (number->string counter)))))
; check console
(let ((time-now (date-hour (current-date))))
(console-log
(cond ((< time-now 12) "Good morning")
((< time-now 18) "Good afternoon")
(else "Good evening"))))
`
}
}
### JS Interoperability
See [BiwaScheme docs](https://www.biwascheme.org/doc/features.html#javascript-language-interface).
## Language Info
### Name
`scheme`
### Extensions
`.scm`
### Editor
`script`
## Compiler
[BiwaScheme](https://www.biwascheme.org/), a Scheme interpreter written in JavaScript.
### Version
`biwascheme`: v0.8.0
## Code Formatting
Using [Parinfer](https://shaunlebron.github.io/parinfer/).
## Limitations
BiwaScheme implements most of the features of R7RS small, however some features are not supported.
See the [BiwaScheme documentation](https://github.com/biwascheme/biwascheme#conformance) for more information.
## Starter Template
https://livecodes.io/?template=scheme
## Links
- [Scheme Programming Language](https://www.scheme.org/)
- [BiwaScheme](https://www.biwascheme.org/)
- [The Scheme Programming Language (4th Edition)](https://www.scheme.com/tspl4/)
- [Structure and Interpretation of Computer Programs](https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html)