Skip to main content

ROTOR: A Tool for Renaming Values in OCaml’s Module System

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-72812-270-0. (doi:10.1109/IWoR.2019.00013) (KAR id:74129)

PDF Author's Accepted Manuscript
Language: English
Download (262kB) Preview
[thumbnail of paperxcv.pdf]
This file may not be suitable for users of assistive technology.
Request an accessible format
Official URL


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: 16 Nov 2021 10:26 UTC
Resource URI: (The current URI for this page, for reference purposes)
Rowe, Reuben:
Thompson, Simon:
Owens, Scott:
  • Depositors only (login required):