2017-09-19 72 views

回答

1

我不認爲你需要(>> =)那裏。只是

print $ fac number 

應該是足夠的。但是,number需要是IntInteger。所以你要麼需要使用read,要麼簡單得多,而不是使用getLine,使用readLn,這會做getLine並自動將其轉換爲Integral類型。

+1

如果readLn失敗,它將拋出一個IO異常。您可以手動捕獲它,或者使用'Alternative IO'實例:'fix $ \ try_again - > readLn <|>(putStrLn「請再試一次。」*> try_again)'。或者,您可以使用'Text.Read'中的'readMaybe':'numberMaybe < - readMaybe;案例編號可能是{Nothing - >處理錯誤;只是n - > ....}'。嘗試,直到你成功,'修復$ \ try_again - >也許(putStrLn「請再試。」*> try_again)純。 readMaybe =「getLine」。 – dfeuer