Personal tools

Applications and libraries/Compilers and interpreters

From HaskellWiki

< Applications and libraries(Difference between revisions)
Jump to: navigation, search
(Eiffel)
(fmt)
Line 4: Line 4:
 
implemented in Haskell.
 
implemented in Haskell.
   
=Large languages=
+
==Large languages==
   
==Haskell==
+
===Haskell===
   
 
;[http://haskell.org/ghc GHC]
 
;[http://haskell.org/ghc GHC]
Line 23: Line 23:
 
:A parallel version of Haskell from MIT.
 
:A parallel version of Haskell from MIT.
   
===Helium===
+
====Helium====
 
;[http://www.cs.uu.nl/helium/ Helium]
 
;[http://www.cs.uu.nl/helium/ Helium]
 
:A Haskell subset for educational purposes
 
:A Haskell subset for educational purposes
   
===Generic Haskell===
+
====Generic Haskell====
 
;[http://generic-haskell.org/ Generic Haskell]
 
;[http://generic-haskell.org/ Generic Haskell]
 
:An extension of Haskell that supports generic programming
 
:An extension of Haskell that supports generic programming
   
===Data Field Haskell===
+
====Data Field Haskell====
 
;[http://www.mrtc.mdh.se/projects/DFH/ Data Field Haskell]
 
;[http://www.mrtc.mdh.se/projects/DFH/ Data Field Haskell]
 
:A dialect of the functional programming language Haskell that provides an instance of data fields
 
:A dialect of the functional programming language Haskell that provides an instance of data fields
   
===Eden===
+
====Eden====
 
;[http://www.mathematik.uni-marburg.de/~eden/ Eden]
 
;[http://www.mathematik.uni-marburg.de/~eden/ Eden]
 
:A Haskell dialect for parallel programming
 
:A Haskell dialect for parallel programming
   
===Chameleon===
+
====Chameleon====
 
;[http://www.comp.nus.edu.sg/~sulzmann/chameleon/ Chameleon]
 
;[http://www.comp.nus.edu.sg/~sulzmann/chameleon/ Chameleon]
 
:A Haskell-style language which implements the ideas described in a ``A Theory of Overloading``
 
:A Haskell-style language which implements the ideas described in a ``A Theory of Overloading``
   
==Perl==
+
===Perl===
   
 
;[http://pugscode.org Pugs]
 
;[http://pugscode.org Pugs]
 
:Pugs is an implementation of Perl 6, written in Haskell. It aims to implement the full Perl6 specification.
 
:Pugs is an implementation of Perl 6, written in Haskell. It aims to implement the full Perl6 specification.
   
==Ruby==
+
===Ruby===
   
 
;[http://raa.ruby-lang.org/project/rtype/ RType]
 
;[http://raa.ruby-lang.org/project/rtype/ RType]
 
:RType is a Ruby interpreter written in Haskell
 
:RType is a Ruby interpreter written in Haskell
   
==Scheme==
+
===Scheme===
   
 
;[http://halogen.note.amherst.edu/~jdtang/scheme_in_48/tutorial/overview.html Write Yourself a Scheme in 48 Hours]
 
;[http://halogen.note.amherst.edu/~jdtang/scheme_in_48/tutorial/overview.html Write Yourself a Scheme in 48 Hours]
 
:A small Scheme interpreter
 
:A small Scheme interpreter
   
==Lisp==
+
===Lisp===
   
 
;[http://www.defmacro.org/ramblings/lisp-in-haskell.html A Lisp Interpreter In Haskell]
 
;[http://www.defmacro.org/ramblings/lisp-in-haskell.html A Lisp Interpreter In Haskell]
 
:A small lisp interpreter written in Haskell
 
:A small lisp interpreter written in Haskell
   
== Emacs Lisp ==
+
=== Emacs Lisp ===
 
;[http://www.codersbase.com/index.php/helisp Helisp]
 
;[http://www.codersbase.com/index.php/helisp Helisp]
 
:The beginnings of an Emacs lisp compiler/interpreter.
 
:The beginnings of an Emacs lisp compiler/interpreter.
   
==Epigram==
+
===Epigram===
   
 
;[http://www.e-pig.org/ Epigram]
 
;[http://www.e-pig.org/ Epigram]
 
:Epigram is a prototype dependently typed functional programming language
 
:Epigram is a prototype dependently typed functional programming language
   
==Curry==
+
===Curry===
   
 
;[http://danae.uni-muenster.de/~lux/curry/ The M&uuml;nster Curry Compiler]
 
;[http://danae.uni-muenster.de/~lux/curry/ The M&uuml;nster Curry Compiler]
 
:A native code compiler for the declarative multi-paradigm language Curry, written in Haskell
 
:A native code compiler for the declarative multi-paradigm language Curry, written in Haskell
   
==Bluespec==
+
===Bluespec===
 
;[http://www.bluespec.com Bluespec]
 
;[http://www.bluespec.com Bluespec]
 
: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 hardware description language translating a Haskell-like (but with System Verilog syntax these days) language to Verilog.
   
==Cayenne==
+
===Cayenne===
 
;[http://www.depedent-types.org/ Cayenne]
 
;[http://www.depedent-types.org/ Cayenne]
 
:A compiler for a Haskell-like language with depedent types.
 
:A compiler for a Haskell-like language with depedent types.
   
==Agda==
+
===Agda===
 
;[http://www.cs.chalmers.se/~catarina/agda/ Agda]
 
;[http://www.cs.chalmers.se/~catarina/agda/ Agda]
 
:A Cayenne-like programming language and proof assistant.
 
:A Cayenne-like programming language and proof assistant.
   
==PolyP==
+
===PolyP===
 
;[http://www.cs.chalmers.se/~patrikj/poly/polyp/ PolyP]
 
;[http://www.cs.chalmers.se/~patrikj/poly/polyp/ PolyP]
 
:A polytypic programming language
 
:A polytypic programming language
   
==Forth==
+
===Forth===
   
 
;[http://feather.perl6.nl/~nothingmuch/harrorth/ Harrorth]
 
;[http://feather.perl6.nl/~nothingmuch/harrorth/ Harrorth]
 
:Harrorth, a Forth interpreter
 
:Harrorth, a Forth interpreter
   
==Eiffel==
+
===Eiffel===
   
 
;[http://eiffelsoftware.origo.ethz.ch/index.php/DynBindModelHaskell Dynamic binding in Eiffel]
 
;[http://eiffelsoftware.origo.ethz.ch/index.php/DynBindModelHaskell Dynamic binding in Eiffel]
 
:A model of dynamic binding in ECMA Eiffel, in Haskell
 
:A model of dynamic binding in ECMA Eiffel, in Haskell
   
=Small languages=
+
==Small languages==
   
==Baskell==
+
===Baskell===
 
;[http://www.cs.mu.oz.au/~bjpop/code.html Baskell]
 
;[http://www.cs.mu.oz.au/~bjpop/code.html Baskell]
 
:An interpreter for a small functional programming language. Supports strict and non-strict evaluation, and type inference. Useful for teaching purposes.
 
:An interpreter for a small functional programming language. Supports strict and non-strict evaluation, and type inference. Useful for teaching purposes.
   
==Unlambda==
+
===Unlambda===
   
 
;[http://www.cse.unsw.edu.au/~dons/code/lambdabot/scripts/Unlambda.hs Unlambda.hs]
 
;[http://www.cse.unsw.edu.au/~dons/code/lambdabot/scripts/Unlambda.hs Unlambda.hs]
 
:An implementation of unlambda in Haskell
 
:An implementation of unlambda in Haskell
   
==BF==
+
===BF===
   
 
;[http://www.cse.unsw.edu.au/~dons/code/lambdabot/scripts/BF.hs BF.hs]
 
;[http://www.cse.unsw.edu.au/~dons/code/lambdabot/scripts/BF.hs BF.hs]
Line 120: Line 120:
   
   
==Lambda calculus==
+
===Lambda calculus===
   
 
;[http://programming.reddit.com/goto?id=qnir 4 lambda calculus implementations]
 
;[http://programming.reddit.com/goto?id=qnir 4 lambda calculus implementations]

Revision as of 07:59, 29 November 2006

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 languages implemented in Haskell.

Contents

1 Large languages

1.1 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
pH
A parallel version of Haskell from MIT.

1.1.1 Helium

Helium
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

1.1.4 Eden

Eden
A Haskell dialect for parallel programming

1.1.5 Chameleon

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

1.2 Perl

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

1.3 Ruby

RType
RType is a Ruby interpreter written in Haskell

1.4 Scheme

Write Yourself a Scheme in 48 Hours
A small Scheme interpreter

1.5 Lisp

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

1.6 Emacs Lisp

Helisp
The beginnings of an Emacs lisp compiler/interpreter.

1.7 Epigram

Epigram
Epigram is a prototype dependently typed functional programming language

1.8 Curry

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

1.9 Bluespec

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

1.10 Cayenne

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

1.11 Agda

Agda
A Cayenne-like programming language and proof assistant.

1.12 PolyP

PolyP
A polytypic programming language

1.13 Forth

Harrorth
Harrorth, a Forth interpreter

1.14 Eiffel

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

2 Small languages

2.1 Baskell

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

2.2 Unlambda

Unlambda.hs
An implementation of unlambda in Haskell

2.3 BF

BF.hs
An implementation of BF in Haskell


2.4 Lambda calculus

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

This page contains a list of libraries and tools in a certain category. For a comprehensive list of such pages, see Libraries and tools.