[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