'm trying to compile my file that has my Euler problems in it to output the solution to problem four, but I'm getting a compile error. Here's my .hs file:
-------------------------
module Euler1 where
import Data.List
import Data.Ord

main = mapM_ putStrLn problem4

problem1 = foldl1' (+) $ nub $ (takeWhile (< 1000) [3,6..] ++ takeWhile (< 1000) [5,10..])
problem2 = sum $ takeWhile (<= 4000000) [x | x <- fibs, even x]
where fibs = unfoldr (\(a,b) -> Just (a,(b,a+b))) (0,1)

problem3 z = maximumBy compare (filter (\x -> z `mod` x == 0) (takeWhile (<= ceiling (sqrt (fromIntegral z))) primes))

problem4 = nub [ show $ y * z | y <- [100..999], z <- [100..999], show (y*z) == reverse (show $ y*z)]

prime p = p `elem` primes

primes = small ++ large
where
1:p:candidates = roll $ mkWheel small
small          = [2,3,5,7]
large          = p : filter isPrime candidates
isPrime n      = all (not . divides n) $ takeWhile (\p -> p*p <= n) large
divides n p    = n `mod` p == 0
mkWheel ds = foldl nextSize w0 ds
nextSize (Wheel n rs) p =
 Wheel (p*n) [r' | k <- [0..(p-1)], r <- rs, let r' = n*k+r, r' `mod` p /= 0]
w0 = Wheel 1 [1]
roll (Wheel n rs) = [n*k+r | k <- [0..], r <- rs]
data Wheel = Wheel Integer [Integer]
------------------------

Here's my output when I try to compile:

ian$ ghc ~/Documents/eulerProblem1.hs -o test
Undefined symbols:
 "___stginit_ZCMain", referenced from:
     ___stginit_ZCMain$non_lazy_ptr in libHSrts.a(Main.o)
 "_ZCMain_main_closure", referenced from:
     _ZCMain_main_closure$non_lazy_ptr in libHSrts.a(Main.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status

What's going on? I'm running GHC 6.8.3, if that helps.