Path operations have been largely been copied from Python, which seems to really get this stuff right, so I'm reluctant to randomly start deviating from that. At least with this design if you're familiar with how Python does it – not everyone is, of course – then you know how things should work.
On Friday, February 6, 2015, <[email protected]> wrote: > > > On Saturday, February 7, 2015 at 3:25:09 AM UTC+11, Jameson wrote: >> >> Calling joinpath on various path segments before creating a final path >> should be valid (to preserve associativity), which means that embedded >> separators is a quite valid operation. >> > > And paths are things that can be read from files/users where they will > have drive letters and separators. > > >> On Fri, Feb 6, 2015 at 11:16 AM Seth <[email protected]> wrote: >> >>> 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, [email protected] >>> 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 >>>>> > <[email protected]> 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 >>>>> > > <[email protected]> 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 >>>>> > > >>>>> > > >>>>> > > >>>>> > > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> >>>>>
