| 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?
- Use the docs found at docs.aspidites.org
$ pip install Aspidites
$ docker pull ghcr.io/rjdbcm/aspidites:latest
$ gh repo clone rjdbcm/Aspidites
Pretty straightforward just use:
$ aspidites -h
Or with docker:
$ docker run -v $PWD:/workdir rjdbcm/aspidites:latest -h
- 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.
- 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.
(Greeter(name -> str)) procedure
<*>print('Greetings,', name)
`Scala-style anonymous functions`
scala = (_ * 2)
val = scala(_ + _)
val(2, 3)
>>> 10
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.
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.
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
The following 3rd-party software packages may be distributed with Aspidites:
Pattern Matching for Python 3.7+ in a simple, yet powerful, extensible manner.
- Author: Julian Fleischer (scravy)
- License: MIT
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.
- Author: Andrea Censi (AndreaCensi)
- License: LGPL
Functional programming in Python: implementation of missing features to enjoy FP
- Author: Oleksii Kachaiev (kachayev)
- License: Apache 2.0
Python library for creating PEG parsers.
- Author: Paul McGuire (ptmcg)
- License: MIT
Persistent/Immutable/Functional data structures for Python.
- Author: Tobias Gustafsson (tobgu)
- License: MIT
Semantic version comparison for Python (see http://semver.org/)
- Author: Raphaël Barrois (rbarrois)
- License: BSD 2 Clause
A restricted execution environment for Python to run untrusted code.
- Author: Zope Foundation (zopefoundation)
- License: Zope Public License