Difference between revisions of "Applications and libraries/Compilers and interpreters"

From HaskellWiki
Jump to navigation Jump to search
(Added Disciple)
Line 142: Line 142:
 
;[http://code.google.com/p/hst/ hst]
 
;[http://code.google.com/p/hst/ hst]
 
:HST is a smalltalk implementation in Haskell. [http://lstephen.wordpress.com/2007/07/23/completing-the-spike/ See here for more information]
 
:HST is a smalltalk implementation in Haskell. [http://lstephen.wordpress.com/2007/07/23/completing-the-spike/ See here for more information]
  +
  +
=== Disciple ===
  +
;[[DDC]]
  +
:Disciple is an explicitly lazy dialect of Haskell which supports destructive update, computational effects, type directed field projections and some other useful things.
  +
  +
   
 
==Small languages==
 
==Small languages==

Revision as of 12:40, 20 March 2008

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.

Large languages

Haskell

GHC
GHC, The Glasgow Haskell Compiler, is written in Haskell
Yhc
Yhc, The York Haskell Compiler, is written in Haskell
Jhc
Jhc is a Haskell compiler which aims to produce the most efficient programs possible via whole program analysis
nhc98
A compiler for Haskell 98, written in Haskell
Ehc
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.
pH
A parallel version of Haskell from MIT.

Helium

Helium
A Haskell subset for educational purposes

Generic Haskell

Generic Haskell
An extension of Haskell that supports generic programming

Data Field Haskell

Data Field Haskell
A dialect of the functional programming language Haskell that provides an instance of data fields

Eden

Eden
A Haskell dialect for parallel programming

Chameleon

Chameleon
A Haskell-style language which implements the ideas described in a ``A Theory of Overloading``

CHR (Constraint Handling Rules)

CHR (ps)
A concurrent committed-choice constraint logic programming language, implemented using GHC's software transactional memory.

Liskell

Liskell
Liskell is Haskell on the inside but looks like Lisp on the outside

Perl

Pugs
Pugs is an implementation of Perl 6, written in Haskell. It aims to implement the full Perl6 specification.

Python

haspy
Haspy is an implementation of Python in Haskell

Ruby

RType
RType is a Ruby interpreter written in Haskell

Flapjax

Flapjax
Flapjax is a language for functional reactive programming of AJAX web applications, whose compiler (source) is written in Haskell.

Scheme

Write Yourself a Scheme in 48 Hours
A small Scheme interpreter
A Scheme in Haskell

Lisp

A Lisp Interpreter In Haskell
A small lisp interpreter written in Haskell

Emacs Lisp

Helisp
The beginnings of an Emacs lisp compiler/interpreter.

Epigram

Epigram
Epigram is a prototype dependently typed functional programming language

Curry

The Münster Curry Compiler
A native code compiler for the declarative multi-paradigm language Curry, written in Haskell

Bluespec

Bluespec
A compiler for a hardware description language translating a Haskell-like (but with System Verilog syntax these days) language to Verilog.

Cayenne

Cayenne
A compiler for a Haskell-like language with depedent types.

Agda

Agda
A Cayenne-like programming language and proof assistant.

PolyP

PolyP
A polytypic programming language

Forth

Harrorth
Harrorth, a Forth interpreter

Eiffel

Dynamic binding in Eiffel
A model of dynamic binding in ECMA Eiffel, in Haskell

Crouton

Crouton
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

Javascript

HJS
HJS is a Javascript parser written in Haskell. Available from HackageDB.

TCL

Hiccup
Hiccup is a minimalistic TCL interpreter. It tries to be relatively simple, relatively efficient, and mostly correct.

Smalltalk

hst
HST is a smalltalk implementation in Haskell. See here for more information

Disciple

DDC
Disciple is an explicitly lazy dialect of Haskell which supports destructive update, computational effects, type directed field projections and some other useful things.


Small languages

Baskell

Baskell
An interpreter for a small functional programming language. Supports strict and non-strict evaluation, and type inference. Useful for teaching purposes.

LambdaPi

LambdaPi
LambdaPi, An Implementation of a Dependently Typed Lambda Calculus

Unlambda

Unlambda.hs
An implementation of unlambda in Haskell

BF

BF.hs
An implementation of BF in Haskell


Lambda calculus

4 lambda calculus implementations
With code, by Lennart Augustsson.
LMEngine
An implementation of the untyped lambda calculus

QML, a functional quantum programming language

QML: A Functional Quantum Programming Language project
It is implemented in Haskell.

For online material on quantum computing in general, see Quantum Computation course held by John Preskill.

HQL - HHM's Quantified Lambda

Hernan's Quantified Lambda
a small functional language, whose expressions can involve the use of quantifier operators

Atom

Atom
Atom is a small HDL that compiles conditional term rewriting systems down to Verilog RTL.

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.

Debuggers

Debussy
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.