All Projects → Calysto → Calysto_scheme

Calysto / Calysto_scheme

A Scheme kernel for Jupyter that can use Python libraries

Programming Languages

python
139335 projects - #7 most used programming language
scheme
763 projects

Labels

Projects that are alternatives of or similar to Calysto scheme

Nbdev template
Template for nbdev projects
Stars: ✭ 161 (-10.06%)
Mutual labels:  jupyter
Signals And Systems Lecture
Continuous- and Discrete-Time Signals and Systems - Theory and Computational Examples
Stars: ✭ 166 (-7.26%)
Mutual labels:  jupyter
Image generator
DCGAN image generator 🖼️.
Stars: ✭ 173 (-3.35%)
Mutual labels:  jupyter
Jupyterhub Tutorial
Tutorial materials for deploying JupyterHub
Stars: ✭ 161 (-10.06%)
Mutual labels:  jupyter
Nbdime
Tools for diffing and merging of Jupyter notebooks.
Stars: ✭ 2,135 (+1092.74%)
Mutual labels:  jupyter
Influxdb Client Python
InfluxDB 2.0 python client
Stars: ✭ 165 (-7.82%)
Mutual labels:  jupyter
Cling
The cling C++ interpreter
Stars: ✭ 2,322 (+1197.21%)
Mutual labels:  jupyter
Ocaml Jupyter
An OCaml kernel for Jupyter (IPython) notebook
Stars: ✭ 177 (-1.12%)
Mutual labels:  jupyter
Jupyterlab Interactive Dashboard Editor
A drag-and-drop dashboard editor for JupyterLab
Stars: ✭ 165 (-7.82%)
Mutual labels:  jupyter
Pai
Resource scheduling and cluster management for AI
Stars: ✭ 2,223 (+1141.9%)
Mutual labels:  jupyter
Ipyparallel
IPython Parallel: Interactive Parallel Computing in Python
Stars: ✭ 2,127 (+1088.27%)
Mutual labels:  jupyter
Rtc
Real Time Collaboration for Jupyter and beyond
Stars: ✭ 164 (-8.38%)
Mutual labels:  jupyter
Pythonvscode
This extension is now maintained in the Microsoft fork.
Stars: ✭ 2,013 (+1024.58%)
Mutual labels:  jupyter
Py
Repository to store sample python programs for python learning
Stars: ✭ 4,154 (+2220.67%)
Mutual labels:  jupyter
Stata kernel
A Jupyter kernel for Stata. Works with Windows, macOS, and Linux.
Stars: ✭ 172 (-3.91%)
Mutual labels:  jupyter
Cheatsheets.pdf
📚 Various cheatsheets in PDF
Stars: ✭ 159 (-11.17%)
Mutual labels:  jupyter
Configurable Http Proxy
node-http-proxy plus a REST API
Stars: ✭ 166 (-7.26%)
Mutual labels:  jupyter
Pixiedust node
Jupyter magic to allow Node.js code to run in a notebook
Stars: ✭ 177 (-1.12%)
Mutual labels:  jupyter
Extension Examples
JupyterLab Extensions by Examples
Stars: ✭ 174 (-2.79%)
Mutual labels:  jupyter
Ipywebrtc
WebRTC for Jupyter notebook/lab
Stars: ✭ 171 (-4.47%)
Mutual labels:  jupyter

Calysto Scheme

codecov CircleCI

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

Binder

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, 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.

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 --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:

#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

Install

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:

  • 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
  • complete Scheme functions (one can fall back to Python for now)

Limitations:

  • Runs slow on CPython; try PyPy
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].