1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
========================================================================
HSX - Haskell-Source with eXtensions
========================================================================
HSX is a package for handling and manipulating Haskell source code. It
is based on the haskell-src package that is part of the standard
libraries, but extends this to support a number of syntactic
extensions, e.g. MPTCs, fundeps, GADTs, TH etc.
Apart from the more standard extensions supported by e.g. GHC, HSX
also provides support for HaRP (Haskell Regular Patterns) and HSP
(Haskell Server Pages) syntax, and supplies functions for
desugaring these extensions into vanilla Haskell (with extensions).
------------------------------------------------------------------------
Package structure:
The modules that comprise HSX all reside in the hierarchic
namespace Language.Haskell.Hsx. The exposed modules are:
* Language.Haskell.Hsx.Syntax - The abstract syntax tree that the other
modules work on.
* Language.Haskell.Hsx.Build - Combinators for building abstract syntax.
* Language.Haskell.Hsx.Parser - Functions for parsing Haskell source
code into an abstract syntax representation.
* Language.Haskell.Hsx.Pretty - Pretty-printer for the abstract syntax.
* Language.Haskell.Hsx.Transform - Desugar HaRP and HSP code into
vanilla Haskell (with extensions).
* Language.Haskell.Hsx - Imports and re-exports all the above, and
also defines some functions that combine functionality from several
modules.
------------------------------------------------------------------------
Supported extensions:
* Multi-parameter type classes (MPTCs)
* Functional dependencies
* Liberal class and instance heads
* Implicit parameters (ghc and hugs)
* Pattern guards
* Generalized algebraic data types (GADTs)
* Template Haskell (TH)
* Universal and existential quantification (forall)
* Empty data type declarations
* Unboxed tuples (# #)
* Regular patterns
* Haskell XML, HSP style
As-of-yet unsupported extensions:
* Pragmas. These can exist in the code but are treated as comments.
* Unboxed functions ( ident# )
Any other out there..?
Unsupported:
* n+k patterns
------------------------------------------------------------------------
Portability and dependencies:
The package itself is Haskell98-compliant and should build with any
Haskell compiler.
------------------------------------------------------------------------
License:
The HSX Package is distributed under a derived BSD-style license. It
derives from several sources, all of which are distributable under
BSD-style or compatible licenses. See the file LICENSE for the complete
license text.
------------------------------------------------------------------------
Building:
See the file INSTALL
|