[Haskell-beginners] Trying to compile my first program that imports
another program
Mitchell Kaplan
mitchell at kaplan2.com
Sun Apr 25 21:07:36 EDT 2010
Hi,
I created (with help) a function to test for prime numbers. It worked well
enough for now in ghci.
----------------
f x n y
| n>y = True
| rem x n == 0 = False
| otherwise = f x (n+1) y
primeQ x = f x 2 y
where
y = floor(sqrt(fromIntegral x))
---------------
I then wanted to create object code so that I could import it. It seemed
that I had to precede the above with the 2 lines:
----------------
module Prime
where
----------------
I ran:
ghc -c prime.hs, and created prime.o and prime.hi.
Next, I wanted to write a program to import and use this function.
I wrote:
------------
module Main () where
import Prime
main = primeQ 123
------------
I tried to compile this with:
ghc -o test Main.hs prime.o
I got the following error:
Main.hs:5:0:
Couldn't match expected type 'IO t' against inferred type 'Bool'
In the expression: main
When checking the type of the function 'main'
----------------
First I'd like a hint as to what I need to do to make this work.
It's pretty obvious that I don't know what I'm doing with regard to types.
Also, I have no idea if I have to name this module Main, but when I didn't
the compiler complained about that.
In the function that I think I had to re-write to make object code, I wound
up with 2 where statements, which worries me.
I'd really appreciate any help in getting me unraveled.
Mitchell
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20100425/7e83cc44/attachment.html
More information about the Beginners
mailing list