Aspidites is the reference implementation of the Woma Language


Keywords
language, compiler, functional-programming
License
GPL-2.0+
Install
pip install Aspidites==1.16.1

Documentation

ASPIDITES IS NOT MAINTAINED

Wheel the Woma

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


| English | 中文 |


  • Who is the Woma programming language for?

    • First and foremost it is for people wanting to write CPython extensions fast, like really fast. Traditionally these are written in C. Woma has the advantage of being shorthand for well constrained and type-checked Python Extensions. The specifics of the Woma Programming Language are being standardized as a series of WEEPs (Woma Extension and Evaluation Proposals).
  • Why use the name Aspidites? What's a Woma?

    • There is also a genus of Python called Aspidites, latin for shield-bearer, that is this project's namesake. They are endemic to mainland Australia and are also known as the Woma Python.
  • How do I get Aspidites?

    • We maintain several packages for Aspidites, however, we recommend using the PyPI install for the latest stable version. Docker is the place to go for the bleeding edge development versions of Aspidites.
  • How do I actually learn the Woma Programming Language?

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

  • Words should be for the programmer and the data model not built-in language features.
  • A programmers focus should be on the logic of the program not trying to remember methods and namespaces.
  • The off-sides rule is sufficient to delineate scope, but should be limited in it's ability to nest.

Goals

  • Ultra-smooth runtime exception handling with useful warnings.
  • Demonic non-determinism, favors non-termination and type-negotiation (constraint satisfaction).
  • Terseness, symbolic operations are used to make code both concise and readable.
  • Great for writing high-integrity code that works natively with CPython.
  • Usable for general purpose or scientific computing.

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:

  • cython
  • future

Optional:

  • numpy

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.

  • pytest
  • pytest-xdist
  • pytest-mock
  • hypothesis

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.

  • Author: Julian Fleischer (scravy)
  • License: MIT

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

  • Author: Oleksii Kachaiev (kachayev)
  • License: Apache 2.0

pyparsing

Python library for creating PEG parsers.

  • Author: Paul McGuire (ptmcg)
  • License: MIT

pyrsistent

Persistent/Immutable/Functional data structures for Python.

  • Author: Tobias Gustafsson (tobgu)
  • License: MIT

python-semanticversion

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

  • Author: Raphaël Barrois (rbarrois)
  • License: BSD 2 Clause

RestrictedPython

A restricted execution environment for Python to run untrusted code.