
I got -main-is to work with a single Haskell file, but it seems to have trouble with multiple files. $ cat scriptedmain.hs #!/usr/bin/env runhaskell module ScriptedMain where meaningOfLife :: Int meaningOfLife = 42 main :: IO () main = putStrLn $ "Main: The meaning of life is " ++ show meaningOfLife $ cat test.hs #!/usr/bin/env runhaskell module Test where import ScriptedMain hiding (main) main :: IO () main = putStrLn $ "Test: The meaning of life is " ++ show meaningOfLife $ ghc -o scriptedmain -main-is ScriptedMain scriptedmain.hs $ ./scriptedmain Main: The meaning of life is 42 $ ghc -o test -main-is Test.main test.hs scriptedmain.hs compilation IS NOT required ld: duplicate symbol _ZCMain_main_info in scriptedmain.o and test.o collect2: ld returned 1 exit status Cheers, Andrew Pennebaker www.yellosoft.us On Sun, Mar 6, 2011 at 5:54 PM, Daniel Fischer < daniel.is.fischer@googlemail.com> wrote:
On Sunday 06 March 2011 23:32:43, Andrew Pennebaker wrote:
Is there a way to compile a Haskell script with a different module name than Main?
$ ghc -main-is ScriptedMain --make ScriptedMain
The -main-is flag tells GHC what to regard as Main.main. Give it a module name (Foo) to say main is Foo.main, a function name (bar) to tell it main is Main.bar or a quailfied function name (Foo.bar) to tell it main is function bar in module Foo.