<span style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">Hi all,</span><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">
trying to solve the problem 6 "reverse a list"</div><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">I'm getting a different behaviour from ghci / runhaskell.</div>
<div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif"><br></div><blockquote style="color:rgb(34,34,34);font-size:12.666666984558105px;margin:0px 0px 0px 40px;font-family:arial,sans-serif;padding:0px;border:none">
<div><font face="courier new, monospace" size="1">main = do</font></div><div><font face="courier new, monospace" size="1"> putStrLn $ concat (map show (myReverse [1,2,3]))</font></div><div><font face="courier new, monospace" size="1"> -- putStrLn $ concat (map show (myReverse []))</font></div>
<div><font face="courier new, monospace" size="1"><br></font></div><div><font face="courier new, monospace" size="1">myReverse :: [a] -> [a]</font></div><div><font face="courier new, monospace" size="1">myReverse [] = []</font></div>
<div><font face="courier new, monospace" size="1">myReverse (x:xs) = go [] (x:xs)</font></div><div><font face="courier new, monospace" size="1"> where go :: [a] -> [a] -> [a]</font></div><div><font face="courier new, monospace" size="1"> go curr (x:xs) | null xs = [x] ++ curr</font></div>
<div><font face="courier new, monospace" size="1"> go curr (x:xs) = go ([x] ++ curr) xs</font></div></blockquote><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">
<br></div><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">the second putStrLn (once uncommented) gives this error in the runhaskell/ghc:</div>
<div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif"><div><font size="1"> <font face="courier new, monospace">Ambiguous type variable `a0' in the constraint:</font></font></div>
</div><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif"><div><font face="courier new, monospace" size="1"> (Show a0) arising from a use of `show'</font></div>
<div><font face="courier new, monospace" size="1"> Probable fix: add a type signature that fixes these type variable(s)</font></div><div><font face="courier new, monospace" size="1"> In the first argument of `map', namely `show'</font></div>
</div><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif"><br></div><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">
_but_ if I load the same source into ghci I can successfully enter&run the command:</div><blockquote style="color:rgb(34,34,34);font-size:12.666666984558105px;margin:0px 0px 0px 40px;font-family:arial,sans-serif;padding:0px;border:none">
<div><font size="1" face="courier new, monospace">Prelude> :reload</font></div><div><font size="1" face="courier new, monospace">[1 of 1] Compiling Main ( 05.hs, interpreted )</font></div><div><font size="1" face="courier new, monospace">Ok, modules loaded: Main.</font></div>
<div><font size="1" face="courier new, monospace">*Main> putStrLn $ concat (map show (myReverse []))</font></div><div><font size="1" face="courier new, monospace"><br></font></div><div><font size="1" face="courier new, monospace">*Main> </font></div>
</blockquote><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif"><br></div><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">
Then if I "help" the type inference changing the myReverse type declaration to:</div><blockquote style="color:rgb(34,34,34);font-size:12.666666984558105px;margin:0px 0px 0px 40px;font-family:arial,sans-serif;padding:0px;border:none">
<font face="courier new, monospace" size="1">myReverse :: [Int] -> [Int]</font></blockquote><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">
<br></div><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">everything works well</div><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">
<br></div><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">So, my question is: _where_ is the difference between ghci / runhaskell?</div><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">
<br></div><div style="color:rgb(34,34,34);font-size:12.666666984558105px;font-family:arial,sans-serif">thx</div>