Re: Why, for example, maps but array?
"Lloyd R. Prentice" <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <[email protected]> |
Ah, thank you, Łukasz, Got it. All the best, LRP Sent from my iPad > On Aug 15, 2021, at 5:21 AM, Łukasz Niemier <[email protected]> wrote: > > >> >> But it surprises me that obvious functions like file:move/2 > > The problem is that such function is far from "obvious". If you look through many languages you will see, that rarely there is `move` function that moves the file from one location to another. Reason for that is simple - UNIX (I do not know how about Windows) do not have such function, instead there is `rename` function which indeed is present in Erlang [1]. That function has one great limitation - it works **only within single filesystem**. If you want to move file between different filesystems, then it will fail. > > - But, there is `mv` command in shell. > > You may ask. Yes, there is such command, but it operates in 2 different ways, depending on the locations of the files: > > - If source and destination is on the same filesystem, then it just call `rename` and call it a day. > - If source and destination is on different filesystems, then it reads source file, writes it in the destination (aka, does a copy of that file) and then removes the source. > > So reasons for non-existence of `file:move/2` in Erlang is law of leaky abstractions. Nothing more, nothing less. > > [1]: https://erlang.org/doc/man/file.html#rename-2 > > -- > > Łukasz Niemier > [email protected] >