我編寫了一個Haskell函數,用於計算給定列表中每個數字的階乘並將其打印到屏幕。Haskell的「do」問題
factPrint list =
if null list
then putStrLn ""
else do putStrLn ((show.fact.head) list)
factPrint (tail list)
該函數的工作原理,但我發現第三行有點混淆。 由於在「putStrLn」(準?)函數之前沒有「do」,編譯器(GHC)爲什麼沒有報告錯誤? 如果我從第4行省略「do」,則會按預期彈出錯誤消息。
我對Haskell及其方式相當陌生,所以請原諒我,如果我說了一些過於愚蠢的東西。
'做'這裏是_不是一個函數,它是一個關鍵字。 – 2009-10-20 14:00:51
同樣,如果一個then b else c和factPrint(尾部列表)不是語句,它們就是表達式。 – 2009-10-20 14:02:00