Basic Haskell IO (IO String & # 8594; Int)?

Beginner Haskeller. I'm trying to represent the pizza equation using a simple command line that takes multiple people and returns the corresponding number of pizzas per order. I know I need to convert my input ( IO String

) to Int and then convert the result to a string using show

. How am I IO String -> Int

? Or am I skinning this cat wrong?

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."



source to share

1 answer

Using read will convert the type from a string to the appropriate type if possible

And using show converts an integer to this string representation

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


Or do the following:

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




All Articles