例如,拿 Don Stewart 写的代码来回答一些 Stack Overflow 问题:
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 中运行这个程序并给出一个论点。