2012-03-13 12 views
5

Ho iniziato di recente a trafficare con gli specificatori di tipi per migliorare l'efficienza del codice. This è un elenco di tutti i simboli identificatori di tipo nello standard Common Lisp.Identificatori di tipo Lisp comune

Non riesco a vedere l'albero attraverso la foresta.

Qualcuno potrebbe dare (o indicare) una breve descrizione dei diversi specificatori di tipi e quando li si userebbe?

Anche se sono interessati a conoscere tutti loro, il mio interesse diretto va alle differenze tra tipi numerici (relativi Fixnum, bignum, galleggiante, singolo-float, a breve float, ecc ...)

+0

Va notato che specificare i tipi non dovrebbe essere il primo passo per migliorare le prestazioni. Di solito questi non sono necessari, ad eccezione di cicli stretti che sono pesanti per i calcoli. – hajovonta

risposta

8

CLtl2 descrive una versione di Common Lisp prima che fosse standardizzata. Non usarlo come riferimento, ci sono varie differenze rispetto allo standard.

Utilizzare il Common Lisp Hyperspec, che è basato sullo standard Lisp Common ANSI.

I tipi di Common Lisp sono descritti in HyperSpec qui: 4.2.3 Type Specifiers. I vari tipi sono collegati da lì.

+0

È meraviglioso! Grazie! – mck

6

Ecco un'implementazione tipica:

fixnum è un numero intero piccolo che si inserisce in un registro macchina; è il numero intero più veloce

bignum è un numero intero di dimensione illimitata

double-float è un IEEE doppia precisione numero in virgola mobile; può anche essere molto veloce, a seconda del computer

single-float è un numero in virgola mobile a precisione singola IEEE; ha meno gamma e precisione e può essere più lenta del doppio, ma richiede meno memoria

short-float e long-float sono spesso mappati ai due tipi sopra, ma può anche essere diverso, di nuovo, a seconda dell'implementazione CL

+0

molto utile, grazie! – mck

Problemi correlati