Applications and libraries/Compilers and interpreters
From HaskellWiki
(Difference between revisions)
(→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.
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.
