Skip to content

71104/lambda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

The Lambda Programming Language

Resources

License

Stars

Watchers

Forks

Packages

No packages published