# Calysto Scheme
You can try Calysto Scheme without installing anything by clicking on the following button:
Calysto Scheme is a real Scheme programming language, with full support for continuations, including call/cc. It can also use all Python libraries. Also has some extensions that make it more useful (stepper-debugger, choose/fail, stack traces), or make it better integrated with Python. For more details on using Calysto Scheme, see:
In Jupyter notebooks, because Calysto Scheme uses [MetaKernel](https://github.com/Calysto/metakernel/blob/master/README.rst), it has a fully-supported set of “magics”—meta-commands for additional functionality. This includes running Scheme in parallel. See all of the [MetaKernel Magics](https://github.com/Calysto/metakernel/blob/master/metakernel/magics/README.md).
Calysto Scheme is written in Scheme, and then translated into Python (and other backends). The entire functionality lies in a single Python file: https://github.com/Calysto/calysto_scheme/blob/master/calysto_scheme/scheme.py However, you can easily install it (see below).
Calysto Scheme in use:
[CS245: Programming Languages - 2014, Fall](https://jupyter.brynmawr.edu/services/public/dblank/CS245%20Programming%20Languages/2014-Fall/Programming%20Languages,%20Syllabus.ipynb)
[CS245: Programming Languages - 2016, Fall](https://jupyter.brynmawr.edu/services/public/dblank/CS245%20Programming%20Languages/2016-Fall/Syllabus.ipynb)
## Parallel Processing
To use Calysto Scheme in parallel, do the following:
Make sure that the Python module ipyparallel is installed. In the shell, type:
` pip install ipyparallel `
To enable the extension in the notebook, in the shell, type:
` ipcluster nbextension enable `
To start up a cluster, with 10 nodes, on a local IP address, in the shell, type:
` ipcluster start --n=10 `
or listening on a specific address:
` ipcluster start --n=10 --ip=192.168.1.108 `
Initialize the code to use the 10 nodes, inside the notebook from a host kernel (can be any metakernel kernel), type:
` %parallel calysto_scheme CalystoScheme `
Run code in parallel, inside the notebook, type:
Execute a single line, in parallel:
` %px (+ 1 1) `
Or execute the entire cell, in parallel:
` %%px (* cluster_rank cluster_rank) `
Results come back in a Scheme vector, in cluster_rank order. Therefore, the above would produce the result:
`scheme #10(0 1 4 9 16 25 36 49 64 81) ` You can get the results back in the host Scheme by accessing the variable _ (single underscore).
Notice that you can use the variable cluster_rank to partition parts of a problem so that each node is working on something different.
In the examples above, use -e to evaluate the code in the host Scheme as well. Note that cluster_rank is not defined on the host machine, and that this assumes the host kernel is the same as the parallel machines.
A full notebook example can be found here: [Mandelbrot.ipynb](https://github.com/Calysto/metakernel/blob/master/examples/Mandelbrot.ipynb)
## Install
Ensure that your system has jupyter installed, and pyQt and qtconsole if you want to use the qtconsole option.
You can install Calysto Scheme with Python3:
` pip3 install --upgrade calysto-scheme --user python3 -m calysto_scheme install --user `
or in the system kernel folder with:
` sudo pip3 install --upgrade calysto-scheme sudo python3 -m calysto_scheme install `
You can also use the –sys-prefix to install into your virtualenv.
Change pip3/python3 to use a different pip or Python. The version of Python used will determine how Calysto Scheme is run.
Use it in the Jupyter console, qtconsole, or notebook:
` jupyter console --kernel calysto_scheme jupyter qtconsole --kernel calysto_scheme jupyter notebook `
You can also just use the Python program, but it doesn’t have a fancy Read-Eval-Print Loop. Just run:
` python calysto_scheme/scheme.py `
## Requires
Python3
metakernel (installed automatically)
Calysto Scheme can also be un under PyPy for increased performance.
## Features
Calysto Scheme supports:
JIT - just in time compilation
continuations
use of all Python libraries
choose/fail - built in fail and try again
produces stack trace (with line numbers), like Python
test suite
Planned:
Object-oriented class definitions and instance creation
create a full set of Scheme functions (one can fall back to Python functions for now)
Limitations:
Runs faster on PyPy
Metadata
Release files for calysto-scheme 2.1.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| calysto_scheme-2.1.9.tar.gz | 306.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| calysto_scheme-2.1.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 662.4 kB
Release files / calysto_scheme-2.1.9.tar.gz
| Download URL | calysto_scheme-2.1.9.tar.gz |
|---|---|
| Size | 306.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2d74c8ed4c48a1910744b3f5e2d7319d47a2f0a4f11ee3a7784a44d17a642eb5
|
|
BLAKE2b-256 checksum How to use checksums |
02e6f129d3427eec34182c25e343c99e7c744ef2727e6041a3a98b70ad97f01c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|
Release files / calysto_scheme-2.1.9-py3-none-any.whl
| Download URL | calysto_scheme-2.1.9-py3-none-any.whl |
|---|---|
| Size | 355.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
50efb66157d44b9ec17b00f21e9bdd0aae7e2af2e1591b976ec4fd6e1e96e198
|
|
BLAKE2b-256 checksum How to use checksums |
66f2f880a4c299baed4603d2e9d535020b73b941d83b6223f51b1e340b3de1c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.2
|