The Lamb programming language -
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
darkf 6750c3809e Fix somehow-missing LICENSE with zlib license text 5 years ago
examples examples: update association_list 8 years ago
mods/std Add a base64 encoder to std 5 years ago
.gitignore add .gitignore 9 years ago
AST.hs add bitwise operators 5 years ago
Interp.hs Add ord/chr builtins 5 years ago
LICENSE Fix somehow-missing LICENSE with zlib license text 5 years ago
Lamb.hs Added error for each missing file. 8 years ago
Parser.hs Add \0 escape sequence 5 years ago update README 9 years ago
lamb.cabal lamb.cabal: change executable name, add more build deps 5 years ago

Lamb is a toy dynamically typed functional programming language

It's not meant for real-world use but for educational purposes on writing an interpreter with pattern matching in Haskell.


  • No re-assignment (i.e., once you bind a value, you can't re-assign it)
  • Pattern matching: f([]) -> "nothing". f([a]) -> one thing".
  • Imperative I/O
  • Higher-order functions
  • Lexical scope

Hello World!

From examples/helloworld.lamb:

hello() -> "hello, " + hello("world").
hello(object) -> object + "!".


See other examples in the examples directory.


Licensed under the terms of the zlib license. See LICENSE for details.