- este
fruit
é um tipo Talvez - se a fruta for a
apple
e for doce (teste com funçãotestSweet
), então acione o processo A - se não for doce ou
fruit
não for nada, então vá com o processo B
Aqui está o código fictício,
case fruit of
Just apple ->
if testSweet apple then
<ProcessA>
else
<ProcessB>
Nothing ->
<ProcessB>
Mas parece duplicação aqui, tem alguma maneira de consertar isso? Acho que a maneira ideal é que haja apenas uma <ProcessB>
no código.
Você pode usar uma proteção e um fallback para tudo:
O último caso
_
corresponderá aos casosNothing
eJust non_sweet
.Você pode usar a instância
Maybe
deFoldable
:No entanto, diferentemente do pattern match na outra resposta existente, você não terá acesso a
apple
insideProcessA
. Se for necessário, você pode usarfind
instead, mas eu consideraria isso um tanto ofuscado comparado ao pattern-match-and-guard.