Я новичок в haskell, и я прочитал и переварил Учите вас A Haskell For Great Good, опробовав пару вещей путь. Для моего первого проекта я хотел попробовать классику: FizzBuzz. Поэтому я придумал следующий код:
import System.IO
fizzBuzz :: (Integral a) => a -> String
fizzBuzz num
| fizz && buzz = "FizzBuzz"
| fizz = "Fizz"
| buzz = "Buzz"
| otherwise = show num
where fizz = num `mod` 3 == 0
buzz = num `mod` 5 == 0
main = print $ map fizzBuzz [1..100]
Работал отлично, за исключением того, что я получил довольно плотный список, который трудно было прочитать. Поэтому я попробовал эту основную функцию:
main = map putStrLn $ map fizzBuzz [1..100]
И это дает мне ошибку Couldn't match expected type 'IO t' against inferred type '[IO ()]'
. Я пробовал полдюжины вещей, и ничто из этого не помогло. Какой правильный способ делать то, что я пытаюсь сделать?