Skip to content

alex-s168/lambda-mountain

 
 

Repository files navigation

λ☶ (pronounced Lambda Mountain) is a typed macro assembler that provides a relatively clean implementation of System F<: with Specialization.

Not Your Average Assembler

Despite being an assembler, LM provides

  • self-hosting (LM is written in LM)
  • algebraic data types
  • parameterized code and data
  • hygienic macros
  • platform agnostic standard libraries

Why Such a Small Codebase?

LM is currently about 4000 lines of code. LM solves an N by M Problem with language frontends vs language backends. The LM project might interface with larger codebases that define frontends or backends, but the core LM Calculus can stay small.

What is a Fragment Assembler?

An assembler takes pieces of data and sticks them together. Assemblers don't always understand the meaning of what they do, they just do it.

A fragment is a Key-Value Map of Strings to S-Expressions. This data structure permits more detailed manipulation of code than a typical assembler.

About

Compiler Backend for LSTS (Typed Macro Assembler)

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 98.4%
  • HTML 1.0%
  • Coq 0.3%
  • Rust 0.2%
  • Makefile 0.1%
  • Shell 0.0%