id	summary	reporter	owner	description	type	status	priority	resolution	keywords	cc	topic	difficulty	mentor
1536	Transformation and Optimisation Tool	PhilippaCowderoy		"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.

== Interested Mentors ==
 * Philippa Cowderoy <[mailto:flippa@flippac.org]>

== Interested Students ==
 * Bharath Ramsundar <[mailto:bharath.ramsundar@gmail.com]>"	proposed-project	closed	OK	wontfix		flippa@… gwern0@…	Tools	unknown	not-accepted
