The thing about joinpath is that it's typically used for cross-platform 
compatibility. That is, there should be NO slashes that can be interpreted 
as directory separators in any component*, since some systems use a forward 
slash, some a backward slash, and some use other characters like colons to 
separate directories, Since you're (presumably) using joinpath to ensure 
that your code works regardless of the system-specific directory delimiter, 
you don't want to put any delimiters in there to begin with.

Calling joinpath with anything other than valid FILENAME characters ought 
to raise a warning or an exception.

* This is problematic when you need to get a path relative to some root, 
but we'll leave that as an edge case for now - it can be worked around via 
environment variables.


On Thursday, February 5, 2015 at 7:12:01 PM UTC-8, ele...@gmail.com wrote:
>
> This capability would have to be provided somewhere, since its absolutely 
> essential to portably handle many path manipulation use-cases (eg provide 
> an absolute path or a relative path that is relative to some base path). 
>  IMO joinpath() is as good a place as any to have the functionality.
>
> On Friday, February 6, 2015 at 7:45:44 AM UTC+11, Milan Bouchet-Valat 
> wrote:
>>
>> Le jeudi 05 février 2015 à 14:09 -0500, Stefan Karpinski a écrit : 
>> > I don't see how it's magical. The function joinpath(path1,path2) gives 
>> > the path of path2 relative to path1 – that's what it means. When path2 
>> > is absolute, path1 doesn't matter to answer that question. 
>> Yeah, but one could also imagine raising an exception instead, as the 
>> programmer may not have expected path2 to be absolute. It's not magical, 
>> but maybe a little too smart for my taste for a function called 
>> "joinpath". YMMV of course. 
>>
>>
>> Regards 
>>
>> > On Thu, Feb 5, 2015 at 2:06 PM, Milan Bouchet-Valat 
>> > <nali...@club.fr> wrote: 
>> >         Le jeudi 05 février 2015 à 13:55 -0500, Stefan Karpinski a 
>> >         écrit : 
>> >         > When you open the file referred to by path2, that is 
>> >         essentially 
>> >         > looking at joinpath(pwd(), path2) and this is just a 
>> >         generalization of 
>> >         > that that behavior relative to path1 instead of pwd() 
>> >         specifically. 
>> >         > This is also how Python does it, although there seems to be 
>> >         some 
>> >         > confusion due to that as well. 
>> >         Indeed. Isn't this behavior a bit too magical for the Julian 
>> >         philosophy? 
>> >         Is convenience worth the increased confusion here? Maybe this 
>> >         behavior 
>> >         should only be enabled via a keyword argument? 
>> >         
>> >         
>> >         Regards 
>> >         
>> >         > On Thu, Feb 5, 2015 at 12:36 PM, Davide Lasagna 
>> >         > <lasagn...@gmail.com> wrote: 
>> >         >         I know this is documented by what is the rationale 
>> >         for 
>> >         >         joinpath(path1, path2) to return path2 if path2 
>> >         looks like an 
>> >         >         absolute path? 
>> >         > 
>> >         >         Cheers, 
>> >         > 
>> >         >         Davide 
>> >         > 
>> >         > 
>> >         > 
>> >         > 
>> >         
>> >         
>> > 
>> > 
>>
>>

Reply via email to