lambda
v0.10.3
Published
An effort to create the perfect programming language.
Downloads
5,341
Readme
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
Installing
$ npm i -g lambda
Getting Started
$ lambda
> 'Hello, world!'
'Hello, world!'
>
More Information
See the Wiki.