#+TITLE:   lang/scheme
#+DATE:    July 23, 2019
#+SINCE:   v2.0.9
#+STARTUP: inlineimages

* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
  - [[#module-flags][Module Flags]]
  - [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
  - [[#commands][Commands]]
    - [[#geiser][Geiser]]

* Description
This module provides an environment for hacking and having fun in scheme. It is
powered by [[https://www.nongnu.org/geiser/geiser_1.html#introduction][geiser]].

** Module Flags
+ =+chez=
+ =+chibi=
+ =+chicken=
+ =+gambit=
+ =+gauche=
+ =+guile=
+ =+kawa=
+ =+mit=
+ =+racket=

** Plugins
+ [[https://gitlab.com/jaor/geiser][geiser]]
+ [[https://github.com/nbfalcon/macrostep-geiser][macrostep-geiser]]
+ [[https://gitlab.com/emacs-geiser/chez][geiser-chez]] (if =+chez=)
+ [[https://gitlab.com/emacs-geiser/chez][geiser-chibi]] (if =+chibi=)
+ [[https://gitlab.com/emacs-geiser/chicken][geiser-chicken]] (if =+chicken=)
+ [[https://gitlab.com/emacs-geiser/gambit][geiser-gambit]] (if =+gambit=)
+ [[https://gitlab.com/emacs-geiser/gauche][geiser-gauche]] (if =+gauche=)
+ [[https://gitlab.com/emacs-geiser/guile][geiser-guile]] (if =+guile=)
+ [[https://github.com/flatwhatson/flycheck-guile][flycheck-guile]] (if =+guile= and =:checkers syntax=)
+ [[https://gitlab.com/emacs-geiser/kawa][geiser-kawa]] (if =+kawa=)
+ [[https://gitlab.com/emacs-geiser/mit][geiser-mit]] (if =+mit=)
+ [[https://gitlab.com/emacs-geiser/racket][geiser-racket]] (if =+racket=)

* Prerequisites
This module requires you to have at least one of the supported schemes, namely:
- [[https://www.gnu.org/software/guile][Guile]] 2.2.0 or better
- [[https://call-cc.org][Chicken]] 4.8.0 or better
- [[https://www.gnu.org/software/mit-scheme][MIT/GNU Scheme]] 9.1.1 or better
- [[https://synthcode.com/scheme/chibi][Chibi Scheme]] 0.7.3 or better
- [[https://www.scheme.com][Chez Scheme]] 9.4 or better

Their executables must be present in your path for geiser to work properly.

* Features
** Commands
*** Geiser
| command             | key / ex command | description          |
|---------------------+------------------+----------------------|
| ~+scheme/open-repl~ | =:repl=          | Open the Scheme Repl |
|                     |                  |                      |
