node package manager

lambda

An effort to create the perfect programming language.

Lambda

An effort to create the perfect programming language. Currently in alpha stage.

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.

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.

Node.js.

$ npm i -g lambda

$ lambda
> 'Hello, world!'
'Hello, world!'
>

See the Wiki.