Difference between revisions of "Applications and libraries/Compilers and interpreters"
Jump to navigation
Jump to search
DonStewart (talk | contribs) (→Eiffel) |
DonStewart (talk | contribs) (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.