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 
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