Cation Language Overview

Cation as a pure categorical programming language for practical tasks.

We designed Cation to be:

Unique features

Boundness

Cation is the first and the only language where all types are bounded in their size and computational resources at the compile time. This enables two main core language properties: formal verifiability and termination analysis. It also makes Cation a language which can be used for writing ubiquitous deterministic programs suitable for mathematical modelling and immutable smart contracts.

By types being bound we mean that any type is a finite set of a known size, with all possible values known to the compiler.

Parallelism by default

Cation compiller converts a program as a set of expressions into a composition of natural transformations. This allows static analysis at compile-time of which branches of computations depends on which values from other branches; the compiler uses this information to parallize all computing wherever is possible with no programmer or syntax overhead.

When needed, a developer can use an explicit parallelism using asynchronous channels, avoiding racing conditions. These channels can be used to send values, lambda-functions and even other channels between execution threads using rho-calculus: an extension of lambda-calculus for parallel computations.

No RAM, no mutability

Notable features

Syntax

Declarations

Cation has only two keywords: type, for defining a type, and val, for instantiating a value.