Un post piccolo-piccolo (sono in ferie).
Anche perché devo sempre finire una cosa per giovedì 16 (ma credo che se mi faccio vedere quel giorno si parla solo delle ferie finite, diciamo che posso tirarla lunga fino al 20, lunedì).
Ah! poi –chi mi segue su Twitter magari ne sa già qualcosina– prossimamente grosse novità, con Bit3Lux & Lightuono.

Ma per intanto, anche durante le ferie, con questo caldo c’è qualcuno che –pensa te!– pensa al ‘puter!
E ti fa delle domande come questa, di ieri: devo riportare in relazione una serie di calcoli, completi di espressione matematica e risultato, come questo, in Excel:

È possibile ma un po’ macchinoso, devi dirgli di visualizzare ora la formula (come “testo” se ricordo bene, non ho preso appunti) che come numero. E non puoi fare solo il copia-incolla (non ricordo perché).
Si può fare qualcosa, uno scriptino?
Cerrrto! Proviamo interattivamente con Python

ecco, in caso di errore ti dice cos’è che non va. E il tutto può essere montato in uno script, eccoe un assaggino
import sys formula = '3 * 12 + 6' try: r = eval(formula) print r except: print sys.exc_info()[1]
import sys formula = '3 * i2 + 6' try: r = eval(formula) print r except: print sys.exc_info()[1]

Questo è solo un abbozzo, da completare eseguendo un ciclo, scrivendo su un file e il tutto con una graziosa interfaccia grafica.
Però, adesso che mi viene in mente, c’è un altro linguaggio di scripting, simpatico, piccolo, ultraperformante, ecco
#!/usr/bin/newlisp (set-locale "C") ;; ma anche no (set 'formula "(+ (* 3 12) 6)") (set 'r (eval-string formula)) (println formula " = " r) (exit)
#!/usr/bin/newlisp (set-locale "C") ;; ma anche no (set 'formula "(+ (* 3 i2) 6)") (set 'r (eval-string formula)) (println formula " = " r) (exit)

Togliendo l’istruzione set-locale i numeri vengono con la virgola al posto del punto, mica siamo ‘mericani! E notare che la gestione dell’errore è automatica.
Domanda: Ma mica possiamo scrivere le formule in quel modo lì, che non si possono nelanche leggere!
Risposta: Mi aspettavo l’obiezione, esiste il modulo infix, ammira:
#!/usr/bin/newlisp (set-locale "C") ;; ma anche no (module "infix.lsp") (set 'formula '"3 * 12 + 6") (set 'r (eval(INFIX:xlate formula))) (println formula " = " r) (exit)
#!/usr/bin/newlisp (set-locale "C") ;; ma anche no (module "infix.lsp") (set 'formula '"3 * i2 + 6") (set 'r (eval(INFIX:xlate formula))) (println formula " = " r) (exit)

Osservazione finale: finisci sempre lì, è una mania, ne uscirai?
Uh! a momenti dimenticavo: le formule possono contenere variabili, verifica lasciata come esercizio

dai, non esageriamo!
