Rowe, Reuben, Férée, Hugo, Thompson, Simon, Owens, Scott (2009) ROTOR: A Tool for Renaming Values in OCaml’s Module System. In: 2019 IEEE/ACM 3rd International Workshop on Refactoring. . IEEE ISBN 978-1-7281-2270-0. (doi:10.1109/IWoR.2019.00013) (KAR id:74129)
PDF
Author's Accepted Manuscript
Language: English |
|
Download this file (PDF/183kB) |
|
Request a format suitable for use with assistive technology e.g. a screenreader | |
Official URL: https://doi.org/10.1109/IWoR.2019.00013 |
Abstract
The functional programming paradigm presents its own unique challenges to refactoring. For the OCaml language in particular, the expressiveness of its module system makes this a highly non-trivial task and there is currently no automated support for large-scale refactoring in the OCaml language. We present ROTOR, a tool for automatically renaming toplevel value definitions in OCaml’s module system. To compute the effect of renaming, ROTOR relies on a novel concept which we call a value extension. This is a collection of related declarationsin a program that must all be renamed at once. In practice, this leads to a notion of dependency: renaming a function foo in module A (mutually) depends on renaming function foo in module B etc. We describe important aspects of ROTOR’s design, implementation, and evaluation on two large codebases: Jane Street’s core library and its dependencies, and the OCaml compiler itself. In these real-world settings we find that some cases involve a surprisingly complex network of dependencies, and that the use of the PPX preprocessor system presents significant challenges.
Item Type: | Conference or workshop item (Proceeding) |
---|---|
DOI/Identification number: | 10.1109/IWoR.2019.00013 |
Divisions: | Divisions > Division of Computing, Engineering and Mathematical Sciences > School of Computing |
Depositing User: | Reuben Rowe |
Date Deposited: | 28 May 2019 08:40 UTC |
Last Modified: | 05 Nov 2024 12:37 UTC |
Resource URI: | https://kar.kent.ac.uk/id/eprint/74129 (The current URI for this page, for reference purposes) |
- Link to SensusAccess
- Export to:
- RefWorks
- EPrints3 XML
- BibTeX
- CSV
- Depositors only (login required):