[an innocent question on ghc-users just reminded me of another
missed opportunity in previous Haskell definitions: by chosing to
ignore the very idea of implementations, they have left tool implementors in a limbo.]

these days, there is some momentum for providing Haskell with
various tools for refactoring, documentation, profiling, tracing, instance generators, analyzers, pre-processors for extensions,
editor modes, interactive interfaces (textual, graphical, visual),
.. and even first ides, but all that is hampered by the lack of a standardized interface to functionality that exists in every single Haskell implementation: parsing, type checking, AST, (pretty printing,) semantic information, (evaluation).

that functionality is common to most tools, hard (and unneccessary) work to reimplement, and almost impossible to keep up to date, diverting precious man-power from small teams
trying to provide much needed tools.

all we have at the moment is the haskell-src part of the libraries
Language.Haskell.{Parser,Pretty,Syntax), and some Hugs- or
GHC-specific APIs (Hugs Server API, package GHC), or other
frontends like Programatica, etc..

compare that with Lisp, Smalltalk, SML/NJ and the like, where reflection support means that tool builders get a fantastic head start by being able to reuse available implementation functionality.
if you think that isn't the job of a language standard, think again;
for instance, there is the ADA Semantic Interface Specification (ASIS) - "an interface between an Ada environment (as defined by ISO/IEC 8652:1995) and any tool or application requiring information from it."

http://www.acm.org/sigada/wg/asiswg/ASIS_FAQ.html
http://www.acm.org/sigada/wg/asiswg/
I am aware that the precise form of, say, the GHC API is still
in flux, but I think Haskell' is a great chance to make a start on
standardizing the basics(*), so that those tools will be available for *all* conforming Haskell' implementations, and so that the tool implementers are freed to focus on their core functionality!

cheers,
claus

(*) a standard haskell' api providing the commands of ghci/hugs
   style interactive systems would be a start, together with an
   annotated AST, parser/typer/pretty printer. more detailed
   specifications could be left for future revisions.

_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://haskell.org/mailman/listinfo/haskell-prime

Reply via email to