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.

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.