calysto-scheme


Namecalysto-scheme JSON
Version 1.4.8 PyPI version JSON
download
home_pagehttps://github.com/Calysto/calysto_scheme
SummaryA Scheme kernel for Jupyter that can use Python libraries
upload_time2023-05-16 22:57:21
maintainer
docs_urlNone
authorDouglas Blank
requires_python
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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:

* [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)
* Videos: https://www.youtube.com/watch?v=2w-iO701g_w

## 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
```

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

```
ipcluster nbextension enable
```

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

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

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

* 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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Calysto/calysto_scheme",
    "name": "calysto-scheme",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Douglas Blank",
    "author_email": "doug.blank@gmail.com",
    "download_url": "",
    "platform": "Any",
    "description": "# Calysto Scheme\n\nYou can try Calysto Scheme without installing anything by clicking on the following button:\n\n[![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/Calysto/calysto_scheme/master?filepath=notebooks%2FReference%20Guide%20for%20Calysto%20Scheme.ipynb)\n\n**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:\n\nhttp://nbviewer.jupyter.org/github/Calysto/calysto_scheme/blob/master/notebooks/Reference%20Guide%20for%20Calysto%20Scheme.ipynb\n\nIn 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).\n\nCalysto 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).\n\n**Calysto Scheme** in use:\n\n* [CS245: Programming Languages - 2014, Fall](https://jupyter.brynmawr.edu/services/public/dblank/CS245%20Programming%20Languages/2014-Fall/Programming%20Languages,%20Syllabus.ipynb)\n* [CS245: Programming Languages - 2016, Fall](https://jupyter.brynmawr.edu/services/public/dblank/CS245%20Programming%20Languages/2016-Fall/Syllabus.ipynb)\n* Videos: https://www.youtube.com/watch?v=2w-iO701g_w\n\n## Parallel Processing\n\nTo use Calysto Scheme in parallel, do the following:\n\n1. Make sure that the Python module `ipyparallel` is installed. In the shell, type:\n\n```\npip install ipyparallel\n```\n\n2. To enable the extension in the notebook, in the shell, type:\n\n```\nipcluster nbextension enable\n```\n\n3. To start up a cluster, with 10 nodes, on a local IP address, in the shell, type:\n\n```\nipcluster start --n=10 --ip=192.168.1.108\n```\n\n4. Initialize the code to use the 10 nodes, inside the notebook from a host kernel (can be any metakernel kernel), type:\n\n```\n%parallel calysto_scheme CalystoScheme\n```\n\n5. Run code in parallel, inside the notebook, type:\n\nExecute a single line, in parallel:\n\n```\n%px (+ 1 1)\n```\n\nOr execute the entire cell, in parallel:\n\n```\n%%px\n(* cluster_rank cluster_rank)\n```\n\nResults come back in a Scheme vector, in cluster_rank order. Therefore, the above would produce the result:\n\n```scheme\n#10(0 1 4 9 16 25 36 49 64 81)\n```\nYou can get the results back in the host Scheme by accessing the variable `_` (single underscore).\n\nNotice that you can use the variable `cluster_rank` to partition parts of a problem so that each node is working on something different.\n\nIn 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.\n\nA full notebook example can be found here: [Mandelbrot.ipynb](https://github.com/Calysto/metakernel/blob/master/examples/Mandelbrot.ipynb)\n\n## Install\n\nEnsure that your system has `jupyter` installed, and `pyQt` and `qtconsole` if you want to use the `qtconsole` option. \n\nYou can install Calysto Scheme with Python3:\n\n```\npip3 install --upgrade calysto-scheme --user\npython3 -m calysto_scheme install --user\n```\n\nor in the system kernel folder with:\n\n```\nsudo pip3 install --upgrade calysto-scheme\nsudo python3 -m calysto_scheme install\n```\n\nYou can also use the --sys-prefix to install into your virtualenv.\n\nChange pip3/python3 to use a different pip or Python. The version of Python used will determine how Calysto Scheme is run.\n\nUse it in the Jupyter console, qtconsole, or notebook:\n\n```\njupyter console --kernel calysto_scheme\njupyter qtconsole --kernel calysto_scheme\njupyter notebook\n```\n\nYou can also just use the Python program, but it doesn't have a fancy Read-Eval-Print Loop. Just run:\n\n```\npython calysto_scheme/scheme.py\n```\n\n## Requires\n\n* Python3\n* metakernel (installed automatically)\n\nCalysto Scheme can also be un under PyPy for increased performance.\n\n## Features\n\nCalysto Scheme supports:\n\n* continuations\n* use of all Python libraries\n* choose/fail - built in fail and try again\n* produces stack trace (with line numbers), like Python\n* test suite\n\nPlanned:\n\n* Object-oriented class definitions and instance creation\n* complete Scheme functions (one can fall back to Python for now)\n\nLimitations:\n\n* Runs slow on CPython; try PyPy\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "A Scheme kernel for Jupyter that can use Python libraries",
    "version": "1.4.8",
    "project_urls": {
        "Homepage": "https://github.com/Calysto/calysto_scheme"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e018637cefec056ed337b11ed249f75d978a53a3db0660b7f5e4243f2bf70093",
                "md5": "fc75e71d99a7bcc7a7568dc78011553f",
                "sha256": "f8c2c21fc9ae2ec28c766656b1647a22fc4f2a97d77606bc986712b8978fcb8d"
            },
            "downloads": -1,
            "filename": "calysto_scheme-1.4.8-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fc75e71d99a7bcc7a7568dc78011553f",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 313188,
            "upload_time": "2023-05-16T22:57:21",
            "upload_time_iso_8601": "2023-05-16T22:57:21.386761Z",
            "url": "https://files.pythonhosted.org/packages/e0/18/637cefec056ed337b11ed249f75d978a53a3db0660b7f5e4243f2bf70093/calysto_scheme-1.4.8-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-05-16 22:57:21",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Calysto",
    "github_project": "calysto_scheme",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "circle": true,
    "requirements": [],
    "lcname": "calysto-scheme"
}
        
Elapsed time: 0.06418s