Applications and libraries/Compilers and interpreters
Haskell, with its support for pattern matching on data structures, generic structure traversals, and expressive type system, is popular for implementing compilers and interpreters. Here's a selection of compilers and interpreters implemented in Haskell.
1 Large languages
- GHC, The Glasgow Haskell Compiler, is written in Haskell
- Yhc, The York Haskell Compiler, is written in Haskell
- Jhc is a Haskell compiler which aims to produce the most efficient programs possible via whole program analysis
- A compiler for Haskell 98, written in Haskell
- The purpose of the EHC project is to provide a description of a Haskell compiler which is as understandable as possible so it can be used for education as well as research.
- A parallel version of Haskell from MIT.
- A Haskell subset for educational purposes
1.1.2 Generic Haskell
- Generic Haskell
- An extension of Haskell that supports generic programming
1.1.3 Data Field Haskell
- Data Field Haskell
- A dialect of the functional programming language Haskell that provides an instance of data fields
- A Haskell dialect for parallel programming
- A Haskell-style language which implements the ideas described in a ``A Theory of Overloading``
1.1.6 CHR (Constraint Handling Rules)
- CHR (ps)
- A concurrent committed-choice constraint logic programming language, implemented using GHC's software transactional memory.
- Liskell is Haskell on the inside but looks like Lisp on the outside
- Pugs is an implementation of Perl 6, written in Haskell. It aims to implement the full Perl6 specification.
- RType is a Ruby interpreter written in Haskell
- Flapjax is a language for functional reactive programming of AJAX web applications, whose compiler (source) is written in Haskell.
- Write Yourself a Scheme in 48 Hours
- A small Scheme interpreter
- A Lisp Interpreter In Haskell
- A small lisp interpreter written in Haskell
1.8 Emacs Lisp
- The beginnings of an Emacs lisp compiler/interpreter.
- Epigram is a prototype dependently typed functional programming language
- The Münster Curry Compiler
- A native code compiler for the declarative multi-paradigm language Curry, written in Haskell
- A compiler for a hardware description language translating a Haskell-like (but with System Verilog syntax these days) language to Verilog.
- A compiler for a Haskell-like language with depedent types.
- A Cayenne-like programming language and proof assistant.
- A polytypic programming language
- Harrorth, a Forth interpreter
- Dynamic binding in Eiffel
- A model of dynamic binding in ECMA Eiffel, in Haskell
- Crouton is a small but fairly complete functional programming language for querying and transforming parsed manuscripts, such as the PPCME. It is intended as an alternative to Corpus Search, based on a different philosophy. It is written in (and largely based on) the very nice functional programming language Haskell using the Parsec library
2 Small languages
- An interpreter for a small functional programming language. Supports strict and non-strict evaluation, and type inference. Useful for teaching purposes.
- LambdaPi, An Implementation of a Dependently Typed Lambda Calculus
- An implementation of unlambda in Haskell
- An implementation of BF in Haskell
2.5 Lambda calculus
- An implementation of the untyped lambda calculus
2.6 QML, a functional quantum programming language
- QML: A Functional Quantum Programming Language project
- It is implemented in Haskell.
2.7 HQL - HHM's Quantified Lambda
- Hernan's Quantified Lambda
- a small functional language, whose expressions can involve the use of quantifier operators
- Atom is a small HDL that compiles conditional term rewriting systems down to Verilog RTL.
2.9 AL (Assignment Language)
It is used for teaching purposes in at the Technical University of Vienna. An inerreter implemented in Haskell is described in ALI - an AL Interpreter implemented in Haskell written by Peter Robinson.
- A declarative debugger for OBJ-like languages
- See also Debugging.
This page contains a list of libraries and tools in a certain category. For a comprehensive list of such pages, see Applications and libraries.