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:
-simple removal candidates e.g. (n+k) patterns, irrefutable patterns, etc.
-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
- any major changes, e.g. records
-**Haskell Prime to Haskell'98.**
There is also a case to be made that, if there are to be syntactic additions to the language, it is valuable to define them in terms
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.
- It would also be good of implementations to seamlessly support the integration of haskell 98 and haskell' code, so new code may be written in haskell' but there would be no pressing need to change working code.