Escriviu un programa en Haskell que avalui expressions escrites en notació postfixa sota la presència de possibles errors.
Cada expressió es troba escrita en una línia i és sintàcticament correcta. Una expressió està formada per una seqüència de paraules que poden ser nombres naturals o operadors de suma, resta, producte i divisió.
El resultat d’una expressió és de tipus Either String Int i es correspon a un resultat natural o bé un error: Els nombres negatius resultants de restes porten a l’error "neg", la divisió per zero porta a l’error "div0" i els nombres no naturals resultants de divisions porten a "divE". En el cas d’haver-hi més d’un error en una expressió, cal reportar el de més a l’esquerra.
Input
10 1 + 2 * 2 10 1 + * 3 4 + 7 11 * + 2 2 - * 4 3 - 3 4 - 12 3 / 12 0 / 12 5 / 5 1 1 + / 5 0 / + 666
Output
Right 22 Right 22 Right 0 Right 1 Left "neg" Right 4 Left "div0" Left "divE" Left "divE" Right 666