An open API service indexing awesome lists of open source software.

https://github.com/rsm-lisper/lambda-calculus-interpreter

Lambda Calculus Interpreters implemented in couple different languages. Just for fun.
https://github.com/rsm-lisper/lambda-calculus-interpreter

interpreter lambda lambda-calculus

Last synced: 4 months ago
JSON representation

Lambda Calculus Interpreters implemented in couple different languages. Just for fun.

Awesome Lists containing this project

README

          

# Lambda Calculus Interpreter

Lambda Calculus Interpreters implemented in couple different languages. Just for fun.

Project in its early stage.

# Valid Lambda Calculus Expression

Expression can be a **name** to identify an abstraction point, a **function** to introduce an abstraction or a **function application** to specialize an abstraction.

`` ::= `` | `` | ``

## Name

Any sequence of non-special characters. Special characters are: ` `, `(`, `)`, `[`, `]`, and `;`. For example:

```
10 some 7-and-not-5 :other: 0.0.111 -->
```

## Function

Lambda function is an abstraction over a lambda expression and has the form:

`` ::= `(lambda () )`

where:

`` ::= ``

For example:

```scheme
(lambda (x) x)

(lambda (first) (lambda (second) first))

(lambda (func) (lambda (arg) (func arg)))
```

## Application

A function application has the form:

`` ::= `( )`

where:

`` ::= ``

``

For example:

```scheme
((lambda (x) x) 100)

(((lambda (f) (lambda (n) f)) ) )
```

## Syntax extensions

- `[` and `]` can be used interchangeably with `(` and `)`
- any text between `;` and the end of line is ignored