Как получить значение Maybe в Haskell

Я относительно новичок в 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 . Но как я могу изменить исключить , чтобы он работал хотя бы со строками (или, может быть, со всеми типами)?

34
задан Matthias Braun 16 May 2019 в 07:22
поделиться