Skip to main content

# Calysto Scheme

You can try Calysto Scheme without installing anything by clicking on the following button:

[![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/Calysto/calysto_scheme/master?filepath=notebooks%2FReference%20Guide%20for%20Calysto%20Scheme.ipynb)

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:

http://nbviewer.jupyter.org/github/Calysto/calysto_scheme/blob/master/notebooks/Reference%20Guide%20for%20Calysto%20Scheme.ipynb

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:

## Parallel Processing

To use Calysto Scheme in parallel, do the following:

  1. Make sure that the Python module ipyparallel is installed. In the shell, type:

` pip install ipyparallel `

  1. To enable the extension in the notebook, in the shell, type:

` ipcluster nbextension enable `

  1. 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 `

  1. 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 `

  1. 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)

Source distribution for calysto-scheme 2.1.9
File Size Uploaded
calysto_scheme-2.1.9.tar.gz 306.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for calysto-scheme 2.1.9
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

2.1.9 This release

2 release files

2.1.8

2 release files

2.1.6

2 release files

2.1.5

2 release files

2.1.4

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.4.8

1 release file

1.4.7

2 release files

1.4.6

2 release files

1.4.5

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

3 release files

1.1.9

4 release files

1.1.8

3 release files

1.1.7

4 release files

1.1.6

4 release files

1.1.5

3 release files

1.1.3

3 release files

1.1.2

1 release file

1.1.1

3 release files

1.1.0

3 release files

1.0.8

3 release files

1.0.7

3 release files

1.0.6

3 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.9.0

2 release files

0.8.2

2 release files

0.7.0

2 release files

0.6.8

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page