Ho cercato di classificare formalmente le "inlet" in L.in.oleum 4. La premessa e` che il termine "inlet" e` un catch-all, significa essenzialmente subroutine: una label di codice che puo` essere chiamata. Poi le inlets possono essere, a seconda di come vengono dichiarate e di come si comportano, ricondotte ai casi di subroutine semplici, funzioni, o metodi. I termini che ho definito per dichiararle (e su cui il compilatore effettua dei controlli per produrre avvisi quando qualcosa non e` chiamato in un modo compatibile con la sua dichiarazione) sono questi:
[monaural | binaural] [fn | id]
Il che significa che la inlet puo` essere dichiarata opzionalmente o monaural o binaural, e come ulteriore opzione, o funzione generica (fn) o funzione identita` (id). "monaural" e "binaural" si occupano della questione di come vengono legate all'istanza su cui operano: la sintassi monaural ("che sente da un solo orecchio") e` quella tipica in cui si lega l'istanza alla chiamata, tipo "antani.stampa(perTerra)"; la sintassi binaural (che sente da due orecchie) e` compatibile con la monaural ma in piu` permette di specificare l'istanza come argomento, cioe` di scrivere ANCHE in forma imperativa "stampa(antani,perTerra)". Ci sono delle differenze tra efficienza e comodita` tra le due, a seconda delle circostanze, sicche` non e` affatto privo di senso dichiarare, generalmente come sinonimo, la forma binaural (perche` se l'istanza viene passata come argomento e il metodo non e` una funzione, il registro di riserva diventa caller-saved). Per quanto riguarda le identita`, si dichiarano per usare le fluent interfaces, quelle dove un metodo e` una funzione che ritorna sempre l'istanza su cui opera (dove poi metti le chiamate "a trenino").
Per tornare torna, e permette di delineare piuttosto bene il comportamento di una inlet. Temo solo che non ci si capisca un cazzo. Avro` mica ragione?