On Tuesday 13 December 2011 16:06:44 enrico franchi wrote:
>  Il problema principale e' che non ti fanno fare monkey patching degli
> interi (o delle stringhe)...
> Se no sarebbe stato banale.

E già, ma io personalmente non ne sono dispiaciuto :)

Quando ho scritto che si può ottenere lo stesso risultato dell'esempio di 
Manlio, in una sessione interattiva dell'interprete, ovviamente intendevo 
semplicemente dire che si può "barare" affinché l'interprete faccia 
apparire lo stesso risultato del 2 + '3viso' di PHP.

Quello che mi era venuto in mente, senza testarlo, era una cosa del genere. 
Sottolineo che non è semanticamente la stessa cosa che ha fatto Manlio in 
Lisp, è solo un trucco :)

Ah e tra l'altro solo per Unix visto che sto usando readline ;)

Ecco cosa mi era passato per la testa:

re_numbers = numbers = re.compile(r'(\d+)+')
re_operators = re.compile(r'[+\-*/]+')

def trick(t, v, tb):
    if isinstance(v, TypeError):
        line = readline.get_history_item(
                   readline.get_current_history_length())
        
        numbers = [int(n) for n in re_numbers.findall(line)]
        operators = re_operators.findall(line)
        # Da qui in poi è banale

Ovviamente usando:
sys.excepthook = trick

Ripeto, è soltanto un modo per far *apparire* lo stesso risultato: non è il 
porting in Python del codice di Manlio.

-- 
 Daniele Tricoli 'Eriol'
 http://mornie.org
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a