我的一个朋友问我为什么要学习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]
Run Code Online (Sandbox Code Playgroud)
该程序按预期工作,除了轻微的异常.它从用户获取输入数字后打印提示消息,产生如下输出:
12
Enter the number of prime numbers to display: [2,3,5,7,11,13,17,19,23,29,31,37]
Run Code Online (Sandbox Code Playgroud)
为什么Haskell没有正确排序IO操作?我哪里错了?
haskell ×1