[Haskell-cafe] A Cabal problem
mblazevic at stilo.com
Thu May 8 16:34:32 EDT 2008
Duncan Coutts wrote:
> On Tue, 2008-05-06 at 09:43 -0400, Mario Blazevic wrote:
>> Trevor Elliott wrote:
>>> Cabal doesn't pass the --main-is option, I believe because it is
>>> specific to GHC. What you could do is add this flag in the ghc-options
>>> field of your executable in the cabal file, like this:
>>> ghc-options: --main-is Shell
>> That worked like charm, except the two dashes should be one (my
>> mistake). Thank you.
> Note that hackage will reject packages that use "ghc-options: -main-is"
> with the message that it is not portable. The rationale is that unlike
> other non-portable extensions, it is easy to change to make it portable:
> If you want to argue for supporting this ghc extension and/or implement
> support (possibly with workaround support for the other haskell
> implementations) then please do comment on the above ticket.
After some experimentation, I've changed my opinion and now agree with
the current behaviour. I had the impression that every Haskell module
had to reside in a same-named file. While this appears to be true for
*imported* modules and GHC (hence my mistaken impression), the Haskell
98 standard does not specify anything of the sort. In case of the
top-level module, GHC (as well as the standard) allows it to reside in a
file of any name. So the only reasonable use for -main-is option, as I
see it, is to allow multiple small main modules residing in the same
file, and I guess that's not likely to be encountered in a package.
More information about the Haskell-Cafe