A novel representation of lists and its application to the function "reverse"
Information Processing Letters
The/Munich Project CIP
The foundation of a generic theorem prover
Journal of Automated Reasoning
Higher-order expression procedures
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Algebra of programming
Building program optimizers with rewriting strategies
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
A transformation-based optimiser for Haskell
Science of Computer Programming - Special issue on the 6th European symposium on programming
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
A new approach to generic functional programming
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Types and programming languages
Types and programming languages
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Typed Combinators for Generic Traversal
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
PVS: A Prototype Verification System
CADE-11 Proceedings of the 11th International Conference on Automated Deduction: Automated Deduction
Expression procedures and program derivation
Expression procedures and program derivation
Path, a program transformation system for haskell
Path, a program transformation system for haskell
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Scrap more boilerplate: reflection, zips, and generalised casts
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Rippling: meta-level guidance for mathematical reasoning
Rippling: meta-level guidance for mathematical reasoning
Introducing the Haskell equational reasoning assistant
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
System F with type equality coercions
TLDI '07 Proceedings of the 2007 ACM SIGPLAN international workshop on Types in languages design and implementation
Combinators for bidirectional tree transformations: A linguistic approach to the view-update problem
ACM Transactions on Programming Languages and Systems (TOPLAS) - Special issue on POPL 2005
Tool support for refactoring functional programs
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Stratego/XT 0.17. A language and toolset for program transformation
Science of Computer Programming
Comparing libraries for generic programming in haskell
Proceedings of the first ACM SIGPLAN symposium on Haskell
The worker/wrapper transformation
Journal of Functional Programming
Handbook of Practical Logic and Automated Reasoning
Handbook of Practical Logic and Automated Reasoning
A Haskell Hosted DSL for Writing Transformation Systems
DSL '09 Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages
Generic programming with fixed points for mutually recursive datatypes
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
A survey of strategies in rule-based program transformation systems
Journal of Symbolic Computation
A tactic language for the system Coq
LPAR'00 Proceedings of the 7th international conference on Logic for programming and automated reasoning
A generic deriving mechanism for Haskell
Proceedings of the third ACM Haskell symposium on Haskell
Generative type abstraction and type-level computation
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
TLDI '12 Proceedings of the 8th ACM SIGPLAN workshop on Types in language design and implementation
Equality proofs and deferred type errors: a compiler pearl
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Type-changing rewriting and semantics-preserving transformation
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
The HERMIT in the stream: fusing stream fusion's concatMap
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
The importance of reasoning about and refactoring programs is a central tenet of functional programming. Yet our compilers and development toolchains only provide rudimentary support for these tasks. This paper introduces a programmatic and compiler-centric interface that facilitates refactoring and equational reasoning. To develop our ideas, we have implemented HERMIT, a toolkit enabling informal but systematic transformation of Haskell programs from inside the Glasgow Haskell Compiler's optimization pipeline. With HERMIT, users can experiment with optimizations and equational reasoning, while the tedious heavy lifting of performing the actual transformations is done for them. HERMIT provides a transformation API that can be used to build higher-level rewrite tools. One use-case is prototyping new optimizations as clients of this API before being committed to the GHC toolchain. We describe a HERMIT application - a read-eval-print shell for performing transformations using HERMIT. We also demonstrate using this shell to prototype an optimization on a specific example, and report our initial experiences and remaining challenges.