Lambda
An effort to create the perfect programming language. Currently in alpha stage.
Technical Description
Lambda is an eagerly evaluated lambda calculus with static Hindley-Milner type system and a few additions.
The most relevant additions are:
- a fixed point combinator suitable for eager languages (a.k.a. Z combinator);
- if-then-else;
- infix operators (e.g.
x + y * z
); - exceptions;
- an expressive value domain that includes closures, booleans, strings, several numeric sets (naturals, integers, reals, complex), lists, and objects;
- all JavaScript APIs exposed by the underlying environment, whether it's Node.js, the browser, or anything else.
Recall that Hindley-Milner also requires a let statement.
Example
The following Fibonacci implementation gives an idea of several implementation choices:
let fibonacci = fix fn f, n ->
if n < 2
then 1
else f (n - 1) + f (n - 2) in
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.map fibonacci
The above outputs {1, 1, 2, 3, 5, 8, 13, 21, 34, 55}
.
For more information see the Wiki.
Prerequisites
Node.js.
Installing
$ npm i -g lambda
Getting Started
$ lambda
> 'Hello, world!'
'Hello, world!'
>
More Information
See the Wiki.