Re: automatically resolving open?
Francois Pottier <[email protected]> Wed, 23 Apr 2025 16:32:08 +0200
| Newsgroups | gmane.comp.lang.caml.inria |
|---|---|
| Message-ID | <[email protected]> |
Hello, Le 23/04/2025 à 16:10, Kenichi Asai a écrit : > Would it be possible to transform an OCaml file to the one that does > not use open? I don't know whether it is possible/easy to do this today, but it would certainly interesting and useful to have such a tool. I note that the output that you expect cannot always be produced, due to name shadowing issues. For example if the program is open List module List = struct end let test = map (fun x -> x + 1) [1; 2; 3] then the best output that one can expect is let map = List.map module List = struct end let test = map (fun x -> x + 1) [1; 2; 3] That said (contradicting myself), one can actually obtain better output if one is careful to always use absolute paths. In this example one could write: module List = struct end let test = Stdlib.List.map (fun x -> x + 1) [1; 2; 3] which relies on the fact that the name "Stdlib" is not shadowed. As far as I know there is currently no syntax for absolute paths in OCaml (every path is relative, and every name can be shadowed). Maybe we should consider adding such a syntax? -- François Pottier [email protected] https://cambium.inria.fr/~fpottier/