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

From HaskellWiki
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ünster Curry Compiler]
 
;[http://danae.uni-muenster.de/~lux/curry/ The Mü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.

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
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``

Perl

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

Ruby

RType
RType is a Ruby interpreter written in Haskell

Scheme

Write Yourself a Scheme in 48 Hours
A small Scheme interpreter

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

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.

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

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