Basic Haskell IO (IO String -> Int)?



初学者哈斯凯勒在这里。我正在尝试用一个简单的命令行程序来表示披萨方程,该程序需要很多人并返回适当数量的比萨饼以供订购。我知道我需要将我的输入(IO String)转换为Int,然后使用show将结果转换为字符串。如何IO String -> Int?还是我给这只猫剥皮都错了?

import System.Environment
import System.IO
pizzas :: Integral a => a -> a
pizzas x = div (x * 3) 8
main = do
    putStrLn "How many people are you going to feed?"
    arg <- getLine
    -- arg needs to IO String -> Int
    -- apply pizzas function
    -- Int -> String
    putStrLn "You will need to order " ++ string ++ " pizzas."

如果可能,使用 read 会将类型从字符串转换为适当的类型

使用 show 会将整数转换为它的字符串表示形式

arg <- getLine
let num = pizzas (read arg)
putStrLn $ "You will need to order " ++ (show num) ++ " pizzas."

或者这样做:

arg <- readLn :: IO Int
let num = pizzas arg
putStrLn $ "You will need to order " ++ (show num) ++ " pizzas."

最新更新