Ok. Poti sa dai o lista de variabila - expresie si sa faci o functie getValue(lista, variabila) care iti cauta in lista var X si iti intoarce valoarea.
Daca returnExpresie evalueaza expresia respectiva ar trebui sa mai ai un parametru cu valoarea cu care se inlocuieste variabila X. Ceva de genul: returnExpresie (Symbol x) y = y. Deci in toate ecuatiile iei dupa tine parametrul y care de tip int.
Buna.
Ceva de genul asta:
returnInt :: Expr -> Int
returnInt (Value x) = x
returnInt (Symbol x) = length x
Unde inlocuiesti length x cu ceva care sa intoarca un intreg dintr-un string in functie de ce ai nevoie.
Daca vrei sa iti intoarca eroare pentru cazul cu string: returnInt (Symbol x) = error "Eroareeee"