hexpr-0.0.0.0: hexpr.cabal
-- Initial spine.cabal generated by cabal init. For further documentation,
-- see http://haskell.org/cabal/users-guide/
-- The name of the package.
name: hexpr
-- The package version. See the Haskell package versioning policy (PVP)
-- for standards guiding when and how versions should be incremented.
-- http://www.haskell.org/haskellwiki/Package_versioning_policy
-- PVP summary: +-+------- breaking API changes
-- | | +----- non-breaking API additions
-- | | | +--- code changes with no API change
version: 0.0.0.0
synopsis: A framework for symbolic, homoiconic languages.
description: H-expressions are a variant of S-expressions. Where s-expressions are atoms or nodes grouped into lists of length at least one, h-expressions, or hexprs, are grouped into lists of length two. This may seem very trivial, but this restriction makes it possible to treat parenthesis in the concrete syntax of hexprs merely as a manual override to the basic precedence rules, just as in mathematics. In particular, a suitable hexpr interpreter is capable of understanding eta-converted terms, which is quite unrealistic, if not impossible in an sexpr-based syntax. Thankfully, hexprs retain all the advantages of sexprs with respect to homoiconic syntax.
Hexprs on their own are fairly unhelpful, so we also have also included a configurable hexpr parser based on parsec. I wasn't long before mission creep set in, and a series of tools were produced to aid in creating a frontend for hexpr-based languages. See the package 'hexpr-examples' for some examples of the framework in action.
I think H could stand for many things: the greek letter eta, hierarchical, happy, next in the alphabet after f, or perhaps hexpr == hexpr-expression. Where it comes from is unimportant, what is important is that we can easily the next generation of homoiconic languages.
-- URL for the project homepage or repository.
homepage: https://github.com/Zankoku-Okuno/hexpr/
-- The license under which the package is released.
license: BSD3
-- The file containing the license text.
license-file: LICENSE
-- The package author(s).
author: Zankoku Okuno
-- An email address to which users can send suggestions, bug reports, and
-- patches.
maintainer: zankoku.okuno@gmail.com
-- A copyright notice.
-- copyright:
category: Language
build-type: Simple
-- Constraint on the version of Cabal needed to build this package.
cabal-version: >=1.8
library
-- Modules exported by the library.
exposed-modules: Data.Hierarchy,
Data.Sexpr,
Data.Hexpr,
Language.Parse,
Language.Desugar,
Language.Distfix,
Control.Monad.Stack,
Control.Monad.Errors,
Control.Monad.Gensym,
Control.Monad.Environment,
Data.FiniteType
-- Modules included in this library but not exported.
-- other-modules:
-- Other library packages from which modules are imported.
build-depends: base ==4.6.*,
transformers ==0.3.*,
mtl ==2.1.*,
either ==4.1.*,
parsec ==3.1.*,
data-ref