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