Difference between revisions of "Haskell Lisp"

From HaskellWiki
Jump to navigation Jump to search
(→‎Haskells in Lisp: Added notes about Yale Haskell)
(→‎Lisps in Haskell: Added info about Lisps written in Haskell)
Line 15: Line 15:
   
 
== Lisps in Haskell ==
 
== Lisps in Haskell ==
  +
* TBD
 
  +
Lisp Syntax for Haskell:
  +
  +
* [https://github.com/haskell-lisp/liskell Liskell] - From the ILC 2007 paper: "Liskell uses an extremely minimalistic parse tree and shifts syntactic classification of parse tree parts to a later compiler stage to give parse tree transformers the opportunity to rewrite the parse trees being compiled. These transformers can be user supplied and loaded dynamically into the compiler to extend the language." Has not received attention for a while, though the author has stated that he continues to think about it and has future plans for it.
  +
* [https://github.com/haskell-lisp/historic-lisk Lisk] - Inspired by Liskell, but with the intent of making different design choices. Uses the [http://hackage.haskell.org/package/haskell-src-exts haskell-src-exts] AST and pretty printer to convert Lisk code to Haskell. 100% abandoned; interested parties are actively (and nicely!) discouraged by the original author. The name is being bandied about for a potential new Haskell+Lisp effort (blessed by the original author).
  +
  +
The following Lisps are not wrappers around Haskell, but rather their own languages. Some may offer interop with FFI calls.
  +
  +
* [https://github.com/haskell-lisp/husk-scheme Husk Scheme] - Implements a superset of the R5RS standard and a large portion of the R7RS-small language. Advanced features are provided including continuations, hygienic macros, libraries, and a full numeric tower. Actively maintained.
  +
* [https://github.com/haskell-lisp/leesp Leesp] - Like Husk, this was written are part of the popular Scheme/Haskell tutorial. Actively maintained.
  +
* [https://github.com/haskell-lisp/blaise Blaise] - Slava Akhmechet's Lisp from 2006. Recently updated by community members to run on the lastest version of GHC. The original author likely disavows any interest :-)

Revision as of 17:38, 17 January 2014

Haskell Lisp

Lispers who love Haskell can be heard saying that Haskell is Lisp's missing M-Expression implementation. Though that statement embodies a great deal of poetic license (an perhaps romanticism), there is a very natural fit between the two.

In practical terms, there are two areas of intersection between Haskell and Lisp:

  1. Haskell implementations written in Lisp (there seems to be only one of these), and
  2. Lisps written in Haskell (much more common)

There is a github organization which tracks these projects, though more detail is given below.

Also, there is a twitter account dedicated to all things Haskell+Lisp.

Haskells in Lisp

  • Yale Haskell - written between 1991 and 1993; was built from sources using CMU Common Lisp, Lucid Common Lisp, Allegro Common Lisp, or Harlequin LispWorks

Lisps in Haskell

Lisp Syntax for Haskell:

  • Liskell - From the ILC 2007 paper: "Liskell uses an extremely minimalistic parse tree and shifts syntactic classification of parse tree parts to a later compiler stage to give parse tree transformers the opportunity to rewrite the parse trees being compiled. These transformers can be user supplied and loaded dynamically into the compiler to extend the language." Has not received attention for a while, though the author has stated that he continues to think about it and has future plans for it.
  • Lisk - Inspired by Liskell, but with the intent of making different design choices. Uses the haskell-src-exts AST and pretty printer to convert Lisk code to Haskell. 100% abandoned; interested parties are actively (and nicely!) discouraged by the original author. The name is being bandied about for a potential new Haskell+Lisp effort (blessed by the original author).

The following Lisps are not wrappers around Haskell, but rather their own languages. Some may offer interop with FFI calls.

  • Husk Scheme - Implements a superset of the R5RS standard and a large portion of the R7RS-small language. Advanced features are provided including continuations, hygienic macros, libraries, and a full numeric tower. Actively maintained.
  • Leesp - Like Husk, this was written are part of the popular Scheme/Haskell tutorial. Actively maintained.
  • Blaise - Slava Akhmechet's Lisp from 2006. Recently updated by community members to run on the lastest version of GHC. The original author likely disavows any interest :-)