Improvements to OCaml code editing: the basics of a refactor engine
-
Цель стажировки – заложить основу для системы рефакторинга в Merlin, вдохновлённой IntelliJ и Gleam.
-
Первый эксперимент – команда «вынести выражение на верхний уровень» (extract to toplevel).
-
Как работает
- Выделяется наибольшее выражение внутри выбранного фрагмента.
- Оно переносится в новое
let-связывание на уровень выше. - Если выражение не чистое, создаётся thunk
unit -> …, чтобы сохранить семантику. - Свободные переменные превращаются в параметры новой функции.
-
Примеры
- Константа
3.14159→let const_name1 = 3.14159. print_endlineвнутри блока → оборачивается вfun () -> ….a + b + c + (c * x * y) + z→ функция, принимающаяx, y, a, b, c.
- Константа
-
Результат – работающий прототип, готовый к расширению другими командами.