Например, возьмите код, написанный Доном Стюартом в ответ на какой-то вопрос переполнения стека:
import Control.Monad
import qualified Data.HashTable as H
import System.Environment
main = do
[size] <- fmap (fmap read) getArgs
m <- H.new (==) H.hashInt
forM_ [1..size] $ \n -> H.insert m n n
v <- H.lookup m 100
print v
Загрузите его в GHCi.
:t getArgs ---> getArgs :: IO [String]
:t main ---> main :: IO ()
Почему не печатаетсясигнатура main отражает тот факт, что getArgs :: IO [String]
вызывается?
Когда вы запускаете двоичный файл, вы можете указать аргумент.<prog> 145
возвращает Just 100
Но в GHCi вы не можете: main 145
выдает ошибку.Как вы запускаете эту программу в GHCi и приводите аргумент.