【发布时间】:2013-10-22 09:13:38
【问题描述】:
我的一个朋友问我为什么要学习 Haskell。为了展示 Haskell 的强大功能,我编写了一个显示素数列表的小程序:
main = do
putStr "Enter the number of prime numbers to display: "
number <- fmap read getLine :: IO Int
print . take number . filter isPrime $ [2..]
isPrime :: Integer -> Bool
isPrime n = not . any ((== 0) . mod n) $ [2..floor . sqrt . fromInteger $ n]
程序按预期工作,但有一个小异常。它在从用户获取输入数字后打印提示消息,从而产生如下输出:
12
Enter the number of prime numbers to display: [2,3,5,7,11,13,17,19,23,29,31,37]
为什么 Haskell 没有正确排序 IO 操作?我哪里错了?
【问题讨论】:
标签: haskell