Welcome to the Woma Programming Language!

The reference implementation of the Woma programming language compiler. There is also a genus of Python called Aspidites, latin for shield-bearer, that is this project’s namesake.

Installing

PyPIPyPI - Wheel

$ pip install Aspidites

Running

Pretty straightforward just use:

$ aspidites -h

Paradigms

This means Woma uses a simple predicate logic to create well-constrained types. This is currently implemented using AndreaCensi/contracts. More info on refinement type systems:

“Refinement types enrich a language’s type system with logical predicates that circumscribe the set of values described by the type, thereby providing software developers a tunable knob with which to inform the type system about what invariants and correctness properties should be checked on their code. In this article, we distill the ideas developed in the substantial literature on refinement types into a unified tutorial that explains the key ingredients of modern refinement type systems. In particular, we show how to implement a refinement type checker via a progression of languages that incrementally add features to the language or type system.”

Reference: Jhala, R. and Vazou, N., 2020. Refinement Types: A Tutorial. arXiv preprint arXiv:2010.07763. Read More

Inspirations

Motivation

  • 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 that uses symbolic operations in order 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.

Table of Contents