venerdì 17 febbraio 2017

Il mio nuovo logo


Devo prenderla un po' alla lontana, manco fossi Bersani...

Il Lisp si chiama Lisp perché vine da list processing e dirlo tutto sarebbe troppo lungo e inoltre c'è sotto il solito gioco di parole che solo quelli di Boston riescono a capire. Io che sono di Piobes (pron. piubes) non ci arrivo, chissà voi; qualche bostoniano onrorario?

Ma le liste ci sono davvero-davveo? Secondo l'ottimo Peter Seibel sono un po' come i bosoni del Marco et al.:
The key to understanding lists is to understand that they're largely an illusion built on top of objects that are instances of a more primitive data type. Those simpler objects are pairs of values called cons cells, after the function cons used to create them.
Che poi cons prende due argomenti e restituisce una cons cell; se il secondo argomento non è nil (elemento nullo) o un'altra cons cell la cons cell è visualizzata come i due valori separati da un punto tra parentesi:


I due valori si chiamano, per ragioni storiche, rispettivamente car e cdr dalle funzioni che permettono di ritrovare i valori della cella


Siccome i valori in una cons cell possono essere riferenze a qualsiasi tipo di oggetti si possono costruire strutture più complesse collegando tra loro cons cells in una catena.

Mi state ancora seguendo vero? Bene!

Gli elementi della lista sono tenuti dai cars mentre i collegamenti alle celle susseguenti sono contenuti dai cdrs. L'ultima cella ha il cdr contenente nil. Insomma una lista linkata semplice, direbbero gli infomatti.

OK, se avete resistito fino a qui adesso viene il disegnino da cui originerà i mio logo.
Diventa tutto molto semplice se si visualizzano le cons cells come box e frecce, così


Il box a sinistra è il car e quello di destra il cdr.
Come detto si concatenano, così:


questa struttura è la (list 1 2 3).
Semplice vero?
Tutto lì?
Sì.
Davvero?
Sì.
Ma allora anch'io, volendo, ...
Sì.

Vediamo se avete capito, cedo la parola a Peter:
Because cons cells can hold any kind of values, so can lists. And a single list can hold objects of different types.


The structure of that list would look like this:


Ah! ma allora...
Sì, il logo è la rappresentazione box-and-arrow della cons cell. Poi siccome era troppo piatta l'ho avvolta su una sfera.
Ma tutto questo chemme ****** ammè?
Magari a te non interessa, puoi anche non leggere il post ma era la mia amica Giulia (rockz 😊) che voleva saperlo.
Contenta Giulia? ❤️
(non lo leggerà subito ma appena potrà, mica scade come gli antibiotici).

Ma, logo a parte, davvero è tutto lì?
Sì, parola di Giovane Marmotta (emerita).
Ma allora anch'io, volendo, ...
Sì.

Nessun commento:

Posta un commento