Haskell – 51 – alberi di espressioni – 3

Joe Adlhoch

Continuo da qui, copio qui, scrollare fino a “Evaluator”.

Valutatore
As it turns out, parsing is by far the most complex aspect of evaluating arithmetic expressions. Once the expression is represented as an abstract syntax tree, evaluating that tree is almost trivial. As soon as a language contains more sophisticated features, such as variable bindings or even function definitions, evaluation gets more complex, but for our simple language of arithmetic expressions, we simply walk the tree, applying the mathematical operators after recursively evaluating all subtrees representing the arguments to that operator.

eval :: Expr -> Int
eval (IntLit n) = n
eval (Add expr1 expr2)
  = eval expr1 + eval expr2
eval (Mult expr1 expr2)
  = eval expr1 * eval expr2

Volendo si può scaricare il progetto Expressions ma io seguo un’altra via.

Il tutorial “Learning Haskell” di Gabriele Keller e Manuel M T Chakravarty mi ha consentito di entrare in contatto con il mondo Haskell e le sue convenzioni, molto diverse da tutto quanto avevo visto prima. Però, per me, ha presentato anche aspetti non completamente positivi. È materiale per un corso universitario (introduttivo) che per i non studenti (come me) diventa spesso problematico. Inoltre è un progetto ancora in corso, adesso sono arrivato alla fine di quanto pubblicato che non è una fine, anzi.

A dirla tutta, ma proprio tutta, mi trovo meglio quando il prof è come –per esempio– Jake VanderPlas, i suoi tutorial sui packagers Python sono –secondo me– über, anzi di più assay.

E poi me l’hanno detto in tanti che Haskell è difficile da addomesticare… Ma la stessa cosa l’ho sentita più volte per il Lisp (in realtà io sono su Scheme, anzi Racket), e anche per Python (ah! il Visual Basic, ah! MatLab (Octave)).

Ma insisto, prossimamente riparto, devo scegliere il tutorial da studiare ma ho una lista lunga così 💥 😋

E voglio far mia la dritta di John, rockz! 💥

Anche se: Q: “Ma poi queste cose conti di usarle?” A: “No, non necessariamente, sono vecchio e il mondo è dei giovani”.

🤩

Posta un commento o usa questo indirizzo per il trackback.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: