Ticket #1536 (closed proposed-project: wontfix)
Transformation and Optimisation Tool
|Reported by:||PhilippaCowderoy||Owned by:|
Description (last modified by bramsundar) (diff)
Equational reasoning in Haskell allows us to conceive and perform extremely complex transformations on code with a reasonable degree of reliability, but doing this by hand is tedious, somewhat error-prone and creates significant maintenance issues. Hand-fused code is common and without the unfused code to hand may be highly confusing! Unfused code is easier to modify, but then you have versioning problems. One way or another, this is not a desirable situation.
So let's build some tool support!
- Support operations on either full Haskell or a desugared subset - YHC Core may make a good choice
- Support basic transformations such as alpha-conversion, beta-reduction, case/ctor
- Allow the user to build transformation strategies (perhaps via a Haskell EDSL?) from basic transformations and some form of AST querying
- An addressing scheme for code that's resistant to both transformations and changes to the source code so that strategies can be reused as a program is developed
- A user interface that allows strategies to be build up piece-by-piece while observing their results, somewhat akin to working with tactics in a proof assistant
Building the start of a library of strategies would also be useful - a "simplify" strategy akin to, say, GHC's simplifier would be an obvious go-to in many situations, for example.
- Philippa Cowderoy <flippa@…>
- Bharath Ramsundar <bharath.ramsundar@…>