Я относительно новичок в Haskell и начал читать "Real World Haskell".
Я просто наткнулся на тип «Может быть», и у меня возник вопрос, как получить фактическое значение, например, из Just 1
.
Я написал следующий код:
combine a b c = (eliminate a, eliminate b, eliminate c)
where eliminate (Just a) = a
eliminate Nothing = 0
Это отлично работает если я использую:
combine (Just 1) Nothing (Just 2)
Но если я изменю, например, 1 на String, это не сработает.
Думаю, я знаю, почему: потому что исключить
должен вернуть один тип, который в данном случае является Int
. Но как я могу изменить исключить
, чтобы он работал хотя бы со строками (или, может быть, со всеми типами)?