たとえば、StackOverflowの質問に答えてDonStewartが書いたコードを見てみましょう。
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]
ですか?
バイナリを実行すると、引数を指定できます。
しかし、GHCiでは、次のことはできません。エラーが発生し<prog> 145
ます。このプログラムをGHCiでどのように実行し、議論をしますか。Just 100
main 145