hexpr: A framework for symbolic, homoiconic languages.

[ bsd3, language, library ] [ Propose Tags ]

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.

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.0.0.0
Dependencies base (>=4.6 && <4.7), data-ref, either (>=4.1 && <4.2), mtl (>=2.1 && <2.2), parsec (>=3.1 && <3.2), transformers (>=0.3 && <0.4) [details]
License BSD-3-Clause
Author Zankoku Okuno
Maintainer zankoku.okuno@gmail.com
Category Language
Home page https://github.com/Zankoku-Okuno/hexpr/
Uploaded by ZankokuOkuno at 2014-04-03T18:24:27Z
Distributions
Reverse Dependencies 2 direct, 0 indirect [details]
Downloads 1112 total (3 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Successful builds reported [all 1 reports]