https://github.com/fpoli/lambda
Lambda Machine in Haskell
https://github.com/fpoli/lambda
Last synced: about 1 year ago
JSON representation
Lambda Machine in Haskell
- Host: GitHub
- URL: https://github.com/fpoli/lambda
- Owner: fpoli
- License: gpl-3.0
- Created: 2014-12-15T15:53:16.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2016-01-16T14:56:18.000Z (over 10 years ago)
- Last Synced: 2025-01-30T16:48:00.614Z (over 1 year ago)
- Language: Haskell
- Homepage:
- Size: 38.1 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Lambda
Untyped Lambda Calculus Machine, with functions for encoding simple datatypes (`Int`, `Bool`, `Either`, `Pair`) back and forth their lambda-representation.
[](https://travis-ci.org/fpoli/lambda)
## Example
```haskell
import Prelude hiding (succ)
import Lambda.Engine
import Lambda.Types.Int
main :: IO()
main = do
let two = succ $ succ zero
print two
-- output: λc.λd.d(λa.λb.b(λx.λy.x)((λx.λy.x)(a)(b)))((λa.λb.b(λx.λy.x)((λx.λy.x)(a)(b)))(c)(d))
print $ reduceAll two
-- output: λc.λd.d(λa.λb.b(λx.λy.x)(a))(d(λc.λa.c)(c))
putStrLn $ showInt two
-- output: succ(succ(zero))
```
## Usage
- `make clean`
- `make deps`
- `make lint`
- `make test`
- `make build`
- `make run`
## License
Copyright (C) 2014-2015 Federico Poli
Released under the GNU General Public License, version 3.