Чи є вагома причина, чому саме тип Prelude.read є
read :: Read a => String -> a
а не повертати Maybe
значення?
read :: Read a => String -> Maybe a
Оскільки рядок може не бути синтаксичним Haskell, чи не остання буде більш природною?
Або навіть an Either String a
, де Left
міститиметься початковий рядок, якби він не розбирав, а Right
результат, якби?
Редагувати:
Я не намагаюся змусити інших писати відповідну обгортку для мене. Просто шукаю запевнити, що це безпечно зробити.
readMaybe
функція буде додана незабаром.
take
бути Integral n => n -> [a] -> [a]
?
take
приймає жодногоNum a => a
? Чому існує спеціальний випадокfmap
для списків? Чому цеFunctor
не потрібно дляMonad
екземплярів? Я очікую, що відповідь буде подібною до відповідей на ці та пов’язані з цим питання.