Hello all. I'm trying to use GHC to compile the example parser in Happy, but with no success. I'm using GHC 5.02 for W2K, and I'm not quite sure what to do to make it work. I successfully compiled some small test cases, to see if I had installation problems, and they compiled just fine.
First, the Happy example uses some functions that exist in Hugs but not in GHC, like isAlpha, isDigit and isSpace (I think so, at least, because i type ':t isAlpha' in GHCi and get 'variable not in scope'), so I created a module called CharClasses with these functions. So, I ran happy and generated calc.hs without any problems. When I try to compile calc.hs, by doing ghc -o calc.exe calc.hs CharClasses.hs I get: c:/ghc/ghc- 5.02/libHSstd.a(PrelMain__1.o)(.text+0x16)://c/tmp/ghc1756.hc: undefined reference to `__stginit_Main' c:/ghc/ghc- 5.02/libHSstd.a(PrelMain__2.o)(.text+0x4)://c/tmp/ghc1756.hc: undefined reference to `Main_main_closure' c:/ghc/ghc- 5.02/libHSstd.a(PrelMain__2.o)(.text+0x33)://c/tmp/ghc1756.hc: undefined reference to `Main_main_closure' I tried to compile each .o file separately, but I got the exact same errors. I don't know much about the structure of ghc and the interactions with gcc, but this does look like a linker error, and I'm guessing it's trying to tell me that I don't have a main function. But I do have one, as I checked the calc.hs and the main = getContents >> print . calc . lexer is there. GHCi seems to load the module just fine, and the parser and lexer seem to be working correctly. One strange thing that happens is that if I run an example from the interactive mode, it works, but if I call the main function, I get *** Exception: calc.hs:285: Non-exhaustive patterns in function lexer Another strange behavior is that I can only call the main function once. Any other call I get: Happy> main *** Exception: illegal operation Action: hGetContents Handle: {loc=<stdin>,type=semi-closed,binary=False,buffering=line} Reason: handle is closed File: <stdin> If I reload all modules with ':s' I can run it again, but also only once. I really don't know what I'm doing wrong. Can anyone help me? Thank you in advance, Carlos _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell