Hi all,
trying to solve the problem 6  "reverse a list"
I'm getting a different behaviour from ghci / runhaskell.

main = do
  putStrLn $ concat (map show (myReverse [1,2,3]))
  -- putStrLn $ concat (map show (myReverse []))

myReverse :: [a] -> [a]
myReverse [] = []
myReverse (x:xs) = go [] (x:xs)
    where go :: [a] -> [a] -> [a]
          go curr (x:xs) | null xs  =  [x] ++ curr
          go curr (x:xs)  =  go ([x] ++ curr) xs

the second putStrLn (once uncommented) gives this error in the runhaskell/ghc:
         Ambiguous type variable `a0' in the constraint:
      (Show a0) arising from a use of `show'
    Probable fix: add a type signature that fixes these type variable(s)
    In the first argument of `map', namely `show'

_but_   if I load the same source into ghci I can successfully enter&run the command:
Prelude> :reload
[1 of 1] Compiling Main             ( 05.hs, interpreted )
Ok, modules loaded: Main.
*Main> putStrLn $ concat (map show (myReverse []))

*Main> 

Then if I "help" the type inference changing the myReverse type declaration to:
myReverse :: [Int] -> [Int]

everything works well

So, my question is:  _where_ is the difference between ghci / runhaskell?

thx