Prelude/main magicks?

Malcolm Wallace Malcolm.Wallace at cs.york.ac.uk
Fri May 14 12:38:47 EDT 2004


"Niklas Broberg" <n_broberg at hotmail.com> writes:

> Taking Lava, a hardware description language, as my example, I would argue 
> that many users of Lava don't really care if it's embedded in Haskell or 
> whereever it comes from, they would just use it.   ....
> 
> 	lavac Main.hs
> 
> where lavac is could simply be a script alias of
> 	ghc -fprelude-is Lava
> 
> By using an explicit Lava compiler you declare that this is indeed a Lava 
> program, and you don't expect it to work in any other setting, in particular
> not with a Haskell compiler like GHC.
> 
> And in the same line of thinking, I would want a way of specifying suffixes 
> of input source files. It would be much neater to call your files Foo.lava 
> or similar, and be able to tell GHC to treat them as normal .hs files, i.e.
> 
> 	lavac <== ghc -hssuf lava -fprelude-is Lava

Very intriguing ideas.  However, I'm sure there are easier ways
of implementing a 'lavac' (or other domain-specific compiler) than
adding new flags to ghc (and by implication, to every other Haskell
compiler as well).

All you really need is to hook up a rather simple pre-processor.
For instance,

    #!/bin/sh
    { echo 'module Main where\nimport Lava\n' ; cat $1 } >`basename $1 .lava`.hs

If you want an automatic file association based on suffix, then
something like hmake can do the mapping of .lava onto .hs via this
little pre-processor script.  This solution has the additional benefit
that it is compiler-agnostic.

Regards,
    Malcolm


More information about the Glasgow-haskell-users mailing list