
./foo and foo are not interchangeable: Yes, they are.
..
What you have described is the behaviour of the Bourne shell when it parses a line and searches for a command. If it sees a path component in a command name, it searches from either the filesystem root or the current directory. Otherwise, it uses $PATH, which does not usually contain ".", for security reasons.
As you can now imagine, this has no relation to how a Haskell program should be manipulating paths.
alas, my imagination is lacking: system "bash -c ./s" my point is that > is a path constructor - it should isolate me from /vs\, but nothing else; actually, since i often work in mixed systems, > should not even try to guess the direction of slashes for me, it should just allow me to abstract over that decision, so that i can make it in a single place, consistently for all my paths (and if the next run or another part of the same program wants the slashes the other way round, that should also be possible. if i want anything more intelligent, i can use normalizeXXX, where XXX specifies the norm of the day. claus