|
|
# Tool Support for syntactic change
|
|
|
|
|
|
|
|
|
It is likely that Haskell Prime will make some breaking changes to Haskell'98 code. Thus, it may be worthwhile to consider implementing some tool support to ease the transition. This would take the form of a syntax translator. Many of the components for such a tool already exist (parsers and prettyprinters for the haskell language), so it should be possible with only a little effort.
|
|
|
|
|
|
- **Haskell'98 to Haskell Prime.**
|
|
|
I imagine the maintainers of old code would be happiest if there were a mechanical and guaranteed semantically correct
|
|
|
method for updating their modules. Issues to consider:
|
|
|
|
|
|
- replacements for removal candidates e.g. (n+k) patterns, irrefutable patterns, etc.
|
|
|
- transform imports of the Haskell'98 libraries to imports of Haskell Prime libraries
|
|
|
|
|
|
- **Haskell Prime to Haskell'98.**
|
|
|
There is also a case to be made that, if there are syntactic additions to the language, it could be valuable to define them in terms
|
|
|
of the existing Haskell'98 core. A syntactic translator could then be used as a simple pre-processor to enable users to gain experience
|
|
|
with the proposals in real code, but using existing compilers. This might enable e.g. QuickChecking? of semantic properties to compare
|
|
|
the intended meaning of new constructs with the proposed translation to core (for errors). It would also be a low-cost way to permit
|
|
|
decisions on new syntax to be deferred while experience is gained. If a proposal is eventually rejected, the translator means that any
|
|
|
code using the new extension can easily be reverted. |