About

We believe that strong static typed, pure functional programming (FP) has a lot
to offer in terms of software reliability and performance.
However it has a well-deserved reputation for being difficult to learn for
newcomers.
FP can also be difficult to use for experienced functional programmers.

Multicore computing is ubiquitous,
and other promising parallel architectures either available or on the
horizon;
we believe that it is necessary that parallel and concurrent programming is
available and straight forward.

Goals

Plasma hopes to address these challenges with the following goals.

To combine declarative and
imperative programming features.

We will combine the safety and reasoning power of strongly typed pure
FP with a familiar imperative-like syntax.
We will support
loops, arrays and other imperative programming features.
This benefits both experienced developers and novices.

Simplicity

Keeping things simple is an excellent engineering practice.
It also makes the language and tools easier to understand.

Plasma will have a reduced emphasis and dependence on abstract
concepts like monads.
They're still supported, but now they can be learnt
gradually.
Many interfaces
will have more sensible names, eg:
Mappable rather than Functor.
We will also aim for good tooling and a
consistent syntax;
things that are different will
look different.

Features

Declaratively pure

helping programmers more confidently understand their
programs, making debugging easier.
Purity also makes it easier to apply many optimisations including automatic
parallelisation.
Plasma uses a resource system to make effects safe.
Resources are composable unlike monads.