Aspidites

The reference implementation of the Woma Programming Language compiler.

View on GitHub

Wheel the Woma

stability GitHub Integration Status GitHub Workflow Status Code Climate maintainability Lines of code codecov wakatime GitHub top language platform Twitter Follow


| English | 中文 |


Installing


PyPIPyPI - WheelPyPI - Python VersionPyPI - Downloads

$ pip install Aspidites

Docker Image Version (latest by date)Docker Image Size (latest semver)Docker Pulls

$ docker pull ghcr.io/rjdbcm/aspidites:latest

GitHub release (latest SemVer)GitHub commits since tagged version (branch)

$ gh repo clone rjdbcm/Aspidites

Running

Pretty straightforward just use:

$ aspidites -h

Or with docker:

$ docker run -v $PWD:/workdir rjdbcm/aspidites:latest -h

Paradigms

Philosophy

Goals

Examples

(Greeter(name -> str)) procedure    
    <*>print('Greetings,', name)
`Scala-style anonymous functions`
scala = (_ * 2)
val = scala(_ + _)
val(2, 3)
>>> 10

Logo/Mascot

Wheelie the Woma™ and Woma Programming Language™ are unregistered trademarks of Ross J. Duff. The logos are copyright © Ross J. Duff but may be transferred to an appropriate trust at a later date. This is to prevent confusing/malicious use.

Contributing

If you'd like to help with the Aspidites project as a developer check out the Issues page or fork and make a pull request. Now, for early woma adopters that do not wish to write any Python, reporting issues is always appreciated. If you'd like to help out financially, Aspidites' maintainer accepts donations.

Donate using Liberapay

Information for Developers

libraries.io

Core Dependencies

Aspidites has just 3 core dependencies, two required and one optional, one all licensed under a compatible OSI approved license. In general, dependencies are vendored unless they are commonly-used libraries.

Required:

Optional:

In addition to the core dependencies are the 4 optional dependencies, all licensed under a compatible OSI approved license, needed to run the canned test-suite.

Copying

GitHub

Additional License Info

The following 3rd-party software packages may be distributed with Aspidites:

awesome-pattern-matching

Pattern Matching for Python 3.7+ in a simple, yet powerful, extensible manner.

contracts

PyContracts is a Python package that allows to declare constraints on function parameters and return values. Contracts can be specified using Python3 annotations, or inside a docstring. PyContracts supports a basic type system, variables binding, arithmetic constraints, and has several specialized contracts and an extension API.

fn

Functional programming in Python: implementation of missing features to enjoy FP

pyparsing

Python library for creating PEG parsers.

pyrsistent

Persistent/Immutable/Functional data structures for Python.

python-semanticversion

Semantic version comparison for Python (see http://semver.org/)

RestrictedPython

A restricted execution environment for Python to run untrusted code.