Skip to content

tsoding/lamb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lamb

Smallest Pure Functional Programming Language in C. Based on Untype Lambda Calculus with Normal Order reduction.

Warning

The language currently does not have any memory management and leaks a lot of memory on each reduction. Garbage Collection will be implemented later.

Quick Start

$ cc -std=c99 -o lamb lamb.c
$ ./lamb
,---@.
 W-W'
Enter :help for more info
λ> (\f.(\x.f (x x)) (\x.f (x x))) g
(\f.(\x.f (x x)) (\x.f (x x))) g
(\x.g (x x)) (\x.g (x x))
g ((\x.g (x x)) (\x.g (x x)))
g (g ((\x.g (x x)) (\x.g (x x))))
g (g (g ((\x.g (x x)) (\x.g (x x)))))
g (g (g (g ((\x.g (x x)) (\x.g (x x))))))
g (g (g (g (g ((\x.g (x x)) (\x.g (x x)))))))
g (g (g (g (g (g ((\x.g (x x)) (\x.g (x x))))))))
g (g (g (g (g (g (g ((\x.g (x x)) (\x.g (x x)))))))))
g (g (g (g (g (g (g (g ((\x.g (x x)) (\x.g (x x))))))))))
...

It's recommended to use Lamb with rlwrap.

About

Smallest Pure Functional Programming Language in C

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages