awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
kanaka avatar

kanaka/mal

0
View on GitHub↗
10,665 stars·2,690 forks·Assembly·23 views

Mal

This project is a Lisp interpreter implementation guide and framework designed to teach the core principles of programming language design. It provides a structured, step-by-step technical framework for building a functional Lisp language from scratch, featuring a specialized interpreter engine and an S-expression parser that converts syntax into abstract syntax trees.

The project emphasizes a code-as-data metaprogramming framework, enabling the implementation of macros, quoting, and quasiquoting to transform expressions during evaluation. It is designed with host language agnosticism, allowing the interpreter logic to be implemented across diverse programming languages and runtimes.

The implementation covers a broad range of language capabilities, including lexical scope management, tail-call optimization to prevent stack overflow, and a host-language bridge for interoperability. It includes developer tooling such as a programmable read-eval-print loop for real-time execution in consoles or web browsers, as well as a functional test harness for implementation verification.

Features

  • Interpreter Implementations - Implements a functional Lisp interpreter from scratch to demonstrate core language design principles.
  • Pedagogical Interpreters - Provides a pedagogical implementation of a Lisp interpreter designed to teach core language internals.
  • Programming Language Education - Provides a structured technical guide to teach core programming language concepts like ASTs and lexical scoping.
  • Language Implementation Frameworks - Provides a framework for implementing a custom programming language with specific syntax and evaluation logic.
  • Expression Evaluators - Provides a recursive evaluation engine that processes S-expression abstract syntax trees.
  • Function Definitions - Supports the definition of user-created functions and closures that capture the surrounding lexical environment.
  • Host Runtime Integration - Provides an execution layer that allows the Lisp interpreter to call JavaScript functions and host objects.
  • JavaScript Interoperability - Integrates the Lisp environment with JavaScript to call external methods and exchange data.
  • Language Bridges - Provides a bridge for translating data types and function calls between the Lisp environment and the host runtime.
  • Metaprogramming - Implements metaprogramming capabilities including macros and quoting to transform expressions during evaluation.
  • Metaprogramming & Macros - Utilizes a code-as-data workflow with macros and quoting to generate new expressions during evaluation.
  • Macro Expansion Engines - Implements a macro expansion system that transforms unevaluated code into new expressions.
  • Metaprogramming Frameworks - Ships a toolkit for implementing macros and code-as-data transformations within a custom language environment.
  • LISP Programming Resources - Serves as a comprehensive technical guide for building a functional Lisp language from scratch.
  • Quoting & Quasiquoting - Provides quoting and quasiquoting to treat code as data for generating new expressions.
  • Lexical Scoping Mechanisms - Implements lexical scoping mechanisms to resolve symbols through hierarchical parent-child environment nesting.
  • Abstract Syntax Tree Parsing - Converts raw Lisp source strings into a structured abstract syntax tree via recursive descent parsing.
  • Lexical Environment Nesting - Stores symbol-value mappings in nested environments to support local variables and lexical scoping.
  • Language Syntax Parsers - Implements a parser that translates Lisp S-expression syntax into abstract syntax trees for evaluation.
  • JavaScript Interoperability - Bridges the Lisp environment with JavaScript to invoke external methods and exchange data.
  • Dynamic Data Structures - Utilizes dynamic data structures such as maps, lists, vectors, and atoms to manage internal state.
  • Read-Eval-Print Loops - Provides an interactive read-eval-print loop for real-time code execution and testing.
  • Multi-Language Implementations - Offers reference implementations of the interpreter logic across multiple different programming languages.
  • Host-Agnostic Implementations - Allows the interpreter logic to be implemented across diverse programming languages to demonstrate agnostic design principles.
  • Tail-Call Optimizations - Implements tail-call optimization to prevent stack overflow during recursive function execution.
  • Value Manipulation Utilities - Ships built-in value manipulation utilities for mapping, filtering, and accessing data structure elements.
  • Incremental Implementations - Organizes the interpreter build process into a sequence of verifiable, incremental implementation stages.
  • Compiler Development - A functional Lisp implementation for learning compiler internals.
  • Compilers and Interpreters - Lisp interpreter implemented in many languages.
  • Language Implementations - A multi-language implementation of a Clojure-like Lisp.
  • Multi-Platform Implementations - Educational Lisp with implementations in dozens of host languages.
  • Programming Languages - Multi-language Lisp interpreter implementation guide.
  • Rust in practice - Listed in the “Rust in practice” section of the Rust Learning awesome list.

Star history

Star history chart for kanaka/malStar history chart for kanaka/mal

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Projects sharing features with Mal

These projects share indexed features with Mal. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • rust-lang/rust-by-examplerust-lang avatar

    rust-lang/rust-by-example

    8,026View on GitHub↗

    This project is an interactive programming education resource and tutorial designed for learning the Rust programming language and systems programming concepts. It provides a collection of runnable and editable code examples that serve as a practical reference for language syntax and implementation. The resource features an interactive code sandbox that allows users to execute and test code snippets in real time. It emphasizes the verification of technical accuracy by executing embedded code blocks during the build process to ensure all examples remain functional. The content covers a compre

    Handlebars
    View on GitHub↗8,026
  • norvig/paip-lispnorvig avatar

    norvig/paip-lisp

    7,465View on GitHub↗

    This project is a comprehensive Lisp AI implementation library that provides reference implementations for various artificial intelligence paradigms and symbolic algorithms. It functions as a multi-purpose toolkit containing a logic programming engine, a natural language processing suite, and a symbolic mathematics toolkit. The library is distinguished by its diverse architectural frameworks, including a Prolog-style execution engine that uses unification and goal-driven backtracking, and a system for simulating human decision-making through expert system shells and certainty factors. It also

    Common Lisp
    View on GitHub↗7,465
  • antonmedv/exprantonmedv avatar

    antonmedv/expr

    7,905View on GitHub↗

    Expr is a high-performance expression evaluation engine and language for Go applications. It functions as a dynamic rule engine that parses and executes custom logic and data validations at runtime without requiring the application to be recompiled. The system utilizes a sandboxed logic executor to run expressions without side effects. It ensures program termination by employing instruction-level loop detection to prevent infinite loops and isolates the evaluation process from the host system. The engine employs a bytecode-based virtual machine and abstract syntax tree analysis to achieve ex

    Go
    View on GitHub↗7,905
  • google/cel-gogoogle avatar

    google/cel-go

    2,875View on GitHub↗

    cel-go is a Go implementation of the Common Expression Language, providing a type-safe engine for the evaluation of non-Turing complete, side-effect-free expressions. It functions as an embedded expression engine that converts human-readable strings into type-checked abstract syntax trees to ensure safe execution. The system utilizes a compile-once evaluate-many model, parsing and validating expressions into cached programs for repeated execution across different datasets. It further distinguishes itself as a partial state evaluator, using commutative logic to compute results and return resid

    Gocelexpressionexpression-evaluator
    View on GitHub↗2,875
Compare all 30 related projects→

Frequently asked questions

What does kanaka/mal do?

This project is a Lisp interpreter implementation guide and framework designed to teach the core principles of programming language design. It provides a structured, step-by-step technical framework for building a functional Lisp language from scratch, featuring a specialized interpreter engine and an S-expression parser that converts syntax into abstract syntax trees.

What are the main features of kanaka/mal?

The main features of kanaka/mal are: Interpreter Implementations, Pedagogical Interpreters, Programming Language Education, Language Implementation Frameworks, Expression Evaluators, Function Definitions, Host Runtime Integration, JavaScript Interoperability.

Which projects share features with kanaka/mal?

Projects with overlapping indexed features include: rust-lang/rust-by-example — This project is an interactive programming education resource and tutorial designed for learning the Rust programming… norvig/paip-lisp — This project is a comprehensive Lisp AI implementation library that provides reference implementations for various… antonmedv/expr — Expr is a high-performance expression evaluation engine and language for Go applications. It functions as a dynamic… google/cel-go — cel-go is a Go implementation of the Common Expression Language, providing a type-safe engine for the evaluation of… clojure/clojurescript — ClojureScript is a Lisp-based compiler and runtime that translates Clojure source code into JavaScript. It enables… frege/frege — Frege is a purely functional programming language that compiles to JVM bytecode, providing Haskell-like semantics for…