[Haskell-cafe] Re: Reading files efficiently
Pete Chown
1 at 234.cx
Fri Mar 24 07:34:30 EST 2006
Simon Marlow wrote:
> GHC 6.6 will allow this, because we added the -x flag (works just like
> gcc's -x flag). eg. "ghc -x hs foo.wibble" will interpret foo.wibble as
> a .hs file. I have an uncommitted patch for runghc that uses -x, I need
> to test & commit it.
Ah, that will be very useful, thanks!
You may already know this, but there is an oddity with shellscripts that
can make it difficult to pass flags like -x in a useful way. It's
easiest to show this by an example. First create a shellscript called
bar, containing one line:
#!./foo -x -y
Now create foo from foo.c:
#include <stdio.h>
extern int
main (int argc, char *argv[])
{
int i;
for (i = 0; i < argc; i++)
printf ("argv[%d] = %s\n", i, argv[i]);
}
Now run bar:
$ ./bar -a -b
argv[0] = ./foo
argv[1] = -x -y
argv[2] = ./bar
argv[3] = -a
argv[4] = -b
Notice how -x and -y have ended up in the same element of argv even
though they were meant to be separate arguments. -a and -b were fine
because that line was processed by the shell, which saw the space
between them and split them up. -x and -y were not processed by the
shell, and the kernel is unintelligent about command lines. Everything
after the command name ends up in a single argument.
Of course this isn't a disaster, it just means that programs which
accept arguments in the #! line have to be careful how they parse them.
Pete
More information about the Haskell-Cafe
mailing list