From: Oliver Bandel <oliver@first.in-berlin.de>
To: caml-list@inria.fr
Subject: Re: [Caml-list] Bug in Filename.basename?
Date: Wed, 5 Sep 2007 22:39:26 +0200 [thread overview]
Message-ID: <1189024766.46df13fed404a@webmail.in-berlin.de> (raw)
In-Reply-To: <20070905220031.5995251d.mle+ocaml@mega-nerd.com>
Zitat von Erik de Castro Lopo <mle+ocaml@mega-nerd.com>:
> Oliver Bandel wrote:
>
> > But possibly it's not different to other basename-implementations.
>
> Which is exactly what I said later in my email.
[...]
No, you showed two examples.
Did you tested other systems/implementations also?
Even if all results are the same, it doesn't matter,
because you compare things that can't be compared.
Switch on your mental type checking ;-)
>
> > Looking at that documentation, I can't see no bug in the implementation.
>
> Your documentation documents the Ocaml function.
Yes, and you asked for the behaviour of the OCaml function,
so I did read the right documentation.
You preassumed, that OCaml's Filename.basename has to implement
a basename-function that you want, but this is nonsense.
>
> > When you want to know how your car's GPS-navigation system works,
> > do you look in the documentation of your video-camera or vacuum-cleaner?
>
> We are not talking about GPS systems or video cameras or vacuum cleaners,
> but if you want we can continue;
[...]
it seems, that you want to cintinue this.
But it's better to stop it.
> I would be complaining if I was sold
> a video camera that didn't record video but did suck a lot of air.
You better should open your eyes and see that a video camera is not a car.
And that you looked into the wrong manual.
>
> The function is called basename just like the IEEE Std 1003.1 standard
> function specified by The Open Group:
>
> http://www.opengroup.org/onlinepubs/000095399/functions/basename.html
[...]
This is a C-function. Filename.basename has the same name,
and does a similar thing, but it's an OCaml-function that implements a behaviour
that is described in the OCaml-manual.
If you want the behaviour of
http://www.opengroup.org/onlinepubs/000095399/functions/basename.html
then use it. But you have to program in C for that.
BTW: In your examples you used shells, not C.
This again is wrong, when you compare it with C.
It's more likely to assume that a shell (which shells did you use?
different shells might also bring different results)
is intended to offer the behaviour of the C-functions,
than to assume that OCaml re-implements the shell-behaviour.
>
> In the examples section of that document they give these examples:
>
> Input String Output String
> "/usr/lib" "lib"
> "/usr/" "usr"
[...]
================================================
# Filename.basename "/usr/lib";;
- : string = "lib"
# Filename.basename "/usr/";;
- : string = "."
# Filename.dirname "/usr/lib";;
- : string = "/usr"
# Filename.dirname "/usr/";;
- : string = "/usr"
#
================================================
"/usr/" is a directory. So, Filename.dirname should give "usr".
The behaviour of OCaml's
Filename.concat (Filename.dirname) (Filename.basename)
makes sense to me. IMHO it should be done the way OCaml does it.
And the documentation and the Implementation do not differ.
So, this is fine.
If you mean a directory, append "/", if it is a file, not use a "/" at the end.
So, the OCaml-behaviour IMHO makes sense wonderfully.
Ciao,
Oliver
next prev parent reply other threads:[~2007-09-05 20:39 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-05 8:45 Erik de Castro Lopo
2007-09-05 10:41 ` [Caml-list] " Richard Jones
2007-09-05 11:10 ` Erik de Castro Lopo
2007-09-05 11:25 ` Oliver Bandel
2007-09-05 12:00 ` Erik de Castro Lopo
2007-09-05 13:06 ` Markus E L
2007-09-05 20:39 ` Oliver Bandel [this message]
2007-09-05 21:03 ` Oliver Bandel
2007-09-06 4:52 ` skaller
2007-09-06 7:09 ` Christophe Raffalli
2007-09-06 9:51 ` Oliver Bandel
2007-09-06 9:32 ` Markus E L
2007-09-06 10:00 ` Oliver Bandel
2007-09-05 12:15 ` Mattias Engdegård
2007-09-05 20:54 ` Oliver Bandel
2007-09-05 12:37 ` Brian Hurt
2007-09-05 13:06 ` Markus E L
2007-09-05 12:10 ` Olivier Andrieu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1189024766.46df13fed404a@webmail.in-berlin.de \
--to=oliver@first.in-berlin.de \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox