Да, args :: [String]
, но checkArgCount args
должен иметь тип IO ()
, являясь последней строкой в блоке do
с общим типом IO ()
.
Таким образом, речь идет о типе вывода, а не о типе ввода этой функции.
Изменение 2
на print 2
в последующем if
должно исправить это (и, конечно,изменение сигнатуры типа checkArgCount
для соответствия изменению).