2013-11-14 58 views
3

我是Haskell的新手,我試圖編寫一個簡單的程序。然而,運行以下程序時:Haskell讓語法不起作用

main = do 
    args <- getArgs 
    let w = read (args !! 0) :: Integer 
    in print w 

我收到此錯誤信息:

file.hs:4:5:

同樣的解析上輸入'錯誤let語法在do聲明之外很好...

我在做什麼錯?

回答

5

當在do塊內部時,let語法不同。您不需要in部分,變量範圍自動是do塊的其餘部分。

你的情況:

main = do 
    args <- getArgs 
    let w = read (args !! 0) :: Integer 
    print w 
+0

感謝。爲了記錄,準確的規則是什麼?我什麼時候需要放入'in',什麼時候需要省略? – Timwi

+1

在'let'-as-an-expression中使用'in',在'do'塊中沒有'in'。 –

+4

但請注意''let'表達式在'do'塊中也是有效的,只要它們是匹配的單子類型。可能沒有意義,但你可以在你的例子中包括:'let x = putStrLn'Hello world'in x' –