Difference between revisions of "Applications and libraries/Compilers and interpreters"
Jump to navigation
Jump to search
(Added Disciple) |
(Added the language Whitespace; corrected typo's) |
||
Line 104: | Line 104: | ||
===Cayenne=== |
===Cayenne=== |
||
− | ;[http://www. |
+ | ;[http://www.dependent-types.org/ Cayenne] |
− | :A compiler for a Haskell-like language with |
+ | :A compiler for a Haskell-like language with dependent types. |
===Agda=== |
===Agda=== |
||
Line 130: | Line 130: | ||
: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 |
: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 === |
;[http://www.haskell.org/haskellwiki/Libraries_and_tools/HJS HJS] |
;[http://www.haskell.org/haskellwiki/Libraries_and_tools/HJS HJS] |
||
− | :HJS is a |
+ | :HJS is a JavaScript parser written in Haskell. Available from HackageDB. |
===TCL=== |
===TCL=== |
||
Line 141: | Line 141: | ||
;[http://code.google.com/p/hst/ hst] |
;[http://code.google.com/p/hst/ hst] |
||
− | :HST is a |
+ | :HST is a Smalltalk implementation in Haskell. [http://lstephen.wordpress.com/2007/07/23/completing-the-spike/ See here for more information] |
=== Disciple === |
=== Disciple === |
||
Line 163: | Line 163: | ||
;[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 |
+ | :An implementation of Unlambda in Haskell |
===BF=== |
===BF=== |
||
Line 184: | Line 184: | ||
:It is implemented in Haskell. |
:It is implemented in Haskell. |
||
− | For online material on quantum computing in general, see [http://www.theory.caltech.edu/people/preskill/ph229/ Quantum Computation] course held by [http://www.theory.caltech.edu/people/preskill/index.html John Preskill]. |
+ | :For online material on quantum computing in general, see [http://www.theory.caltech.edu/people/preskill/ph229/ Quantum Computation] course held by [http://www.theory.caltech.edu/people/preskill/index.html John Preskill]. |
===HQL - HHM's Quantified Lambda=== |
===HQL - HHM's Quantified Lambda=== |
||
Line 197: | Line 197: | ||
===AL (Assignment Language)=== |
===AL (Assignment Language)=== |
||
− | It is used for teaching purposes in at the Technical University of Vienna. |
+ | :It is used for teaching purposes in at the Technical University of Vienna. |
− | An |
+ | :An interpreter implemented in Haskell is described in [http://www.logic.at/staff/robinson/ali.ps ALI - an AL Interpreter implemented in Haskell] written by Peter Robinson. |
+ | |||
+ | === Whitespace === |
||
+ | ;[http://compsoc.dur.ac.uk/whitespace/index.php Whitespace] |
||
+ | :A language that uses whitespace characters as language elements and ignores all non-whitespace characters |
||
== Debuggers == |
== Debuggers == |
Revision as of 12:32, 28 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
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 dependent 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 interpreter implemented in Haskell is described in ALI - an AL Interpreter implemented in Haskell written by Peter Robinson.
Whitespace
- Whitespace
- A language that uses whitespace characters as language elements and ignores all non-whitespace characters
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.