IO 定義你的程式主要操作
要使 Haskell 程式可執行,你必須提供具有 IO ()
型別的 main
函式的檔案
main::IO ()
main = putStrLn "Hello world!"
編譯 Haskell 時,它會檢查 IO
資料並將其轉換為可執行檔案。當我們執行這個程式時,它將列印 Hello world!
。
如果你的 IO a
型別的值不是 main
,他們將不會做任何事情。
other::IO ()
other = putStrLn "I won't get printed"
main::IO ()
main = putStrLn "Hello world!"
編譯該程式並執行它將與上一個示例具有相同的效果。other
中的程式碼被忽略。
為了使 other
中的程式碼具有執行時效果,你必須將其組合成 main
。沒有最終組成 main
的 IO
值將具有任何執行時效果。要按順序組合兩個 IO
值,你可以使用 do
-notation:
other::IO ()
other = putStrLn "I will get printed... but only at the point where I'm composed into main"
main::IO ()
main = do
putStrLn "Hello world!"
other
編譯並執行此程式時,它會輸出
Hello world!
I will get printed... but only at the point where I'm composed into main
請注意,操作的順序由 other
如何組成 main
而不是定義順序來描述。