





Graphic Lisp

Elenco delle funzioni








Scritto da :    Andrea Michele Zoia
                Via Pergola #1 23037 TIRANO (Sondrio) Italia
                Tel. ita-342-704210









                             


Convenzioni sintattiche:

	sx		:	s-espressione
	E(sx)		:	valutazione della s-espressione
	{sx1 .. sxn}+	:	1 o piu' ripetizioni di n s-espressioni
	{sx1 .. sxn}*	:	0 o piu' ripetizioni di n s-espressioni
	{sx1 .. sxn}?	:	0 o 1 ripetizioni di n s-espressioni
	{sx1 || sx2}	:	sx1 oppure sx2



Convenzioni dell'elenco:

Nome	    Nome atomico
Tipo	    Tipo della funzione o dell'atomo
Sintassi    Vedi sopra
Valore	    Valore ritornato dalla funzione o collegato all'atomo
Eff.lat.    Effetto laterale della funzione
Spiegazioni Ulteriori spiegazioni della funzione


--------------------------------------------------------------------------------

Nome        *WINDOWS*
Tipo        Atomo globale predefinito
Sintassi    *WINDOWS*
Valore      T o NIL.
Eff.lat.    Nessuno
Spiegazioni Se si usa l'interprete per windows allora questo simbolo  T, NIL altrimenti.

Nome        NIL
Tipo        Atomo globale predefinito
Sintassi    NIL
Valore      NIL
Eff.lat.    Nessuno
Spiegazioni E' il simbolo di FALSO del Lisp. E' anche usato per chiudere le liste. E' equivalente alla lista vuota ().

Nome        T
Tipo        Atomo globale predefinito
Sintassi    T
Valore      T
Eff.lat.    Nessuno
Spiegazioni E' il simbolo di VERO del Lisp. E' anche la superclasse da cui tutte le altre derivano.

Nome        *STDAUX*
Tipo        Atomo globale predefinito.
Sintassi    *STDAUX*
Valore      Stream di output ausiliario.
Eff.lat.    Nessuno
Spiegazioni E' uno stream di output.

Nome        *STDERR*
Tipo        Atomo globale predefinito.
Sintassi    *STDERR*
Valore      Stream di output per i messaggi di errore.
Eff.lat.    Nessuno
Spiegazioni E' uno stream di output.

Nome        *STDIN*
Tipo        Atomo globale predefinito.
Sintassi    *STDIN*
Valore      Stream di input principale.
Eff.lat.    Nessuno
Spiegazioni E' uno stream di input da tastiera.

Nome        *STDOUT*
Tipo        Atomo globale predefinito.
Sintassi    *STDOUT*
Valore      Stream di output principale.
Eff.lat.    Nessuno
Spiegazioni E' uno stream di output su terminale.

Nome        *STDPRN*
Tipo        Atomo globale predefinito.
Sintassi    *STDPRN*
Valore      Stream di output sulla stampante.
Eff.lat.    Nessuno
Spiegazioni E' uno stream di output su stampante.

Nome        FCLEARERR
Tipo        File I/O
Sintassi    ( FCLEARERR sx )
Valore      T.
Eff.lat.    Cancella il flag di errore del file E(sx).
Spiegazioni E(sx) deve essere un file. Serve per rimuovere lo stato di errore di un file. Da usare in congiunzione con FERROR. Se si passa il file NULL allora si ritorna NIL.

Nome        FCLOSE
Tipo        File I/O
Sintassi    ( FCLOSE sx )
Valore      T o NIL se c' qualche errore.
Eff.lat.    Chiude il file E(sx).
Spiegazioni E(sx) deve essere uno stream aperto diverso da *stdin* *stdout* *stderr* *stdaux* *stdprn*.

Nome        FEOF
Tipo        File I/O
Sintassi    ( FEOF sx )
Valore      T se E(sx)  alla fine, NIL altrimenti.
Eff.lat.    Legge lo stato del file E(sx).
Spiegazioni E(sx) deve essere uno stream. Serve per vedere se la posizione di lettura-scrittura di un file ha oltrepassato la fine.

Nome        FERROR
Tipo        File I/O
Sintassi    ( FERROR sx )
Valore      T se il file E(sx) ha avuto degli errori in lettura-scrittura, NIL altrimenti.
Eff.lat.    Legge lo stato del file E(sx).
Spiegazioni E(sx) deve essere uno stream. Se  NULL allora la funzione ritorna T. Per cancellare lo stato di errore si usa FCLEARERR.

Nome        FINPUT
Tipo        File I/O
Sintassi    ( FINPUT sxIn sxOut sxPrompt )
Valore      S-espressione letta da E(sxIn).
Eff.lat.    Legge dal file E(sxIn) e scrive su E(sxOut).
Spiegazioni Serve per leggere le S-espressioni da un file E(sxIn) ed emettere il prompt E(sxPrompt) sul file E(sxOut). E(sxIn) deve essere un file. E(sxOut) deve essere un file o NIL se non si vuole stampare il prompt, E(sxPrompt) deve essere una stringa ad.es. ">" usata per il prompt. ( FINPUT *STDIN* *STDOUT* "*" )  identica a ( INPUT ).

Nome        FOPEN
Tipo        File I/O
Sintassi    ( FOPEN sxn sxm )
Valore      Stream aperto o NIL in caso di errore.
Eff.lat.    Apre il file E(sxn).
Spiegazioni E(sxn) deve essere una stringa rappresentante il nome del file. E(sxm) deve essere una stringa rappresentante il modo di apertura del file: "r" lettura, "w" sovrascrive o crea se il file non esiste(solo scrittura), "a" appendi in scrittura e crea se il file non esiste, "r+" apre in lettura-scrittura, "w+" sovrascrive in lettura-scrittura, "a+" appendi in lettura-scrittura e crea se il file non esiste. Aggiungere "t" se il file  di testo o "b" se  binario, es: "w+b", "wb", ecc ... La sintassi di questa stringa  identica a quella dell' ANSI-C.

Nome        FPRINT
Tipo        File I/O
Sintassi    ( FPRINT sxs {sxi}* )
Valore      La valutazione dell'ultima sxi.
Eff.lat.    Scrive sul file E(sxs).
Spiegazioni Stampa le s-espressioni E(sxi) sullo stream E(sxs). ( FPRINT *STDOUT* sx )  identica a ( PRINT sx ). Se non si specifica nessuna sxi la funzione ritorna NIL senza scrivere nulla sul file.

Nome        FREADBYTE
Tipo        File I/O
Sintassi    ( FREADBYTE sx )
Valore      Intero tra 0 e 255 oppure NIL.
Eff.lat.    Legge dal file E(sx).
Spiegazioni E(sx) deve essere uno stream. Se lo stream  *stdout* *stderr* *stdprn* *stdaux* NULL, ritorna NIL, altrimenti ritorna sempre un intero, dunque per rilevare lo stato di errore si usi la FERROR o la FEOF.

Nome        FSCANF
Tipo        File I/O
Sintassi    ( FSCANF sxs sxt )
Valore      Stringa, intero o reale letto dallo stream E(sxs).
Eff.lat.    Legge dal file E(sxs).
Spiegazioni E(sxs) deve essere un file. E(sxt) deve essere un intero: 0 legge un INTERO, 1 legge un REALE, 2 legge una STRINGA terminata da newline. Se si tenta di leggere un numero errato si ritorna *SYNTAX_ERROR* come nelle STR2INT e STR2REAL.

Nome        FSEEK
Tipo        File I/O
Sintassi    ( FSEEK sxs sxo sxw )
Valore      T o NIL se c' qualche errore.
Eff.lat.    Sposta il puntatore del file E(sxs).
Spiegazioni E(sxs) deve essere uno stream. E(sxo)  lo spostamento del puntatore intero positivo o negativo. E(sxw) deve essere un intero rappresentante lo spostamento relativo: 0 dall'inizio, 1 dalla posizione corrente, 2 dalla fine del file.

Nome        FTELL
Tipo        File I/O
Sintassi    ( FTELL sx )
Valore      Intero rappresentante la posizione di lettura-scrittura del file o NIL se c' qualche errore.
Eff.lat.    Legge la posizione del file.
Spiegazioni E(sx) deve essere uno stream. Esempio per calcolare la lunghezza di un file: (FSEEK f 0 2) si posiziona alla fine e (FTELL f) ritorna la lunghezza.

Nome        FWRITEBYTE
Tipo        File I/O
Sintassi    ( FWRITEBYTE sxs sxb )
Valore      Intero E(sxb).
Eff.lat.    Scrive E(sxb) sul file E(sxs).
Spiegazioni E(sxb) deve essere un intero >=0 <=255. E(sxs) deve essere uno stream. Per controllare eventuali errori si usi FERROR.

Nome        GBRUSHCOLOR
Tipo        Grafica
Sintassi    ( GBRUSHCOLOR sx )
Valore      E(sx).
Eff.lat.    Cambia il colore del pennello.
Spiegazioni E(sx) deve essere un intero, solo i primi 24 bit sono significativi: R*65536+G*256+B , R, G, B tra 0 e 255. Cambia il colore di riempimento aree.

Nome        GBRUSHTYPE
Tipo        Grafica
Sintassi    ( GBRUSHTYPE sx )
Valore      E(sx).
Eff.lat.    Cambia l'aspetto del pennello.
Spiegazioni E(sx) deve essere un intero >=0 <=7. Cambia il pattern di riempimento aree.

Nome        GCLEAR
Tipo        Grafica
Sintassi    ( GCLEAR )
Valore      T
Eff.lat.    Cancella la finestra grafica.
Spiegazioni Se non si  in modalit grafica ritorna NIL. Tutte le funzioni grafiche ritornano NIL se non si  in modalit grafica.

Nome        GFILLELLIPSE
Tipo        Grafica
Sintassi    ( GFILLELLIPSE sxx sxy sxxr sxyr )
Valore      E(sxyr).
Eff.lat.    Traccia e riempie un ellisse.
Spiegazioni E(sxx) E(sxy) sono interi >=0 rappresentanti il centro dell'ellisse. E(sxxr) E(sxyr) sono interi >=0 rappresentanti i due raggi dell'ellisse che verr tracciata con la penna corrente (GPENx) e riempita col pennello corrente (GBRUSHx).

Nome        GFILLPOLY
Tipo        Grafica
Sintassi    ( GFILLPOLY sxn {sxxi sxyi}+ )
Valore      L'ultima sxyi valutata.
Eff.lat.    Traccia e riempie un poligono.
Spiegazioni E(sxn) deve essere un intero >=1 rappresentante il numero dei lati del poligono. E(sxxi) E(sxyi) sono interi rappresentanti le coppie X,Y dei vertici del poligono che verr tracciato con la penna corrente (GPENx) e riempito col pennello corrente (GBRUSHx).

Nome        GFILLSECTOR
Tipo        Grafica
Sintassi    ( GFILLSECTOR sxx sxy sxsa sxea sxxr sxyr )
Valore      E(sxyr).
Eff.lat.    Traccia e riempie un settore di ellisse.
Spiegazioni E(sxx) E(sxy) sono interi >=0 rappresentanti il centro dell'ellisse. E(sxsa) E(sxea) sono due interi rappresentanti gli angoli di inizio e di fine del settore (angoli in GRADI >=0 e <=360). E(sxxr) E(sxyr) sono interi >=0 rappresentanti i due raggi del settore che verr tracciato in senso orario, con la penna corrente (GPENx) e riempito col pennello corrente (GBRUSHx).

Nome        GGETPIXEL
Tipo        Grafica
Sintassi    ( GGETPIXEL sxx sxy )
Valore      Intero rappresentante il colore del punto.
Eff.lat.    Legge dalla finestra grafica.
Spiegazioni E(sxx) deve essere un intero >=0, coordinata X. E(sxy) deve essere un intero, coordinata Y.

Nome        GLINETO
Tipo        Grafica
Sintassi    ( GLINETO sxx sxy )
Valore      E(sxy).
Eff.lat.    Traccia una linea.
Spiegazioni E(sxx) deve essere un intero >=0, coordinata X. E(sxy) deve essere un intero, coordinata Y. La linea  tracciata dalla posizione di una precedente GLINETO o GMOVETO usando la penna corrente (GPENx).

Nome        GMODE
Tipo        Grafica
Sintassi    ( GMODE sx )
Valore      Lista di due interi.
Eff.lat.    Apre o chiude la finestra grafica.
Spiegazioni E(sx) deve essere un intero: 0 Chiude la grafica, 1 apre la grafica HIRES, 2 apre la grafica MIDRES, 3 apre la grafica LOWRES. La lista ritornata (X Y) rappresenta le dimensioni dello schermo grafico. Con Windows le modalit grafiche 1,2,3 differiscono solo per le dimensoni, in Dos differiscono anche per il numero di colori supportati.

Nome        GMOVETO
Tipo        Grafica
Sintassi    ( GMOVETO sxx sxy )
Valore      E(sxy).
Eff.lat.    Cambia la posizione corrente di tracciamento linee.
Spiegazioni E(sxx) deve essere un intero >=0, coordinata X. E(sxy) deve essere un intero, coordinata Y. Per tracciare la linea si usa GLINETO. La linea verr tracciata dalla posizione specificata da GMOVETO a quella di GLINETO.

Nome        GOUTTEXT
Tipo        Grafica
Sintassi    ( GOUTTEXT sxx sxy sxs )
Valore      E(sxs).
Eff.lat.    Scrive sulla finestra grafica.
Spiegazioni E(sxx) deve essere un intero >=0, coordinata X. E(sxy) deve essere un intero >=0, coordinata Y. E(sxs) deve essere una stringa. Il punto x,y  in alto a sinistra.

Nome        GPENCOLOR
Tipo        Grafica
Sintassi    ( GPENCOLOR sx )
Valore      E(sx).
Eff.lat.    Cambia il colore della penna.
Spiegazioni E(sx) deve essere un intero, solo i primi 24 bit sono significativi: R*65536+G*256+B , R, G, B tra 0 e 255. Cambia il colore di tracciamento linee.

Nome        GPENTICK
Tipo        Grafica
Sintassi    ( GPENTICK sx )
Valore      E(sx).
Eff.lat.    Cambia lo spessore della penna.
Spiegazioni E(sx) deve essere un intero >=1. Cambia lo spessore di tracciamento linee. Funziona solo se GPENTYPE  1 altrimenti lo spessore rimarr sempre 1.

Nome        GPENTYPE
Tipo        Grafica
Sintassi    ( GPENTYPE sx )
Valore      E(sx).
Eff.lat.    Cambia l'aspetto della penna.
Spiegazioni E(sx) deve essere un intero >=0 <=5. Cambia il pattern di tracciamento linee.

Nome        GPUTPIXEL
Tipo        Grafica
Sintassi    ( GPUTPIXEL sxx sxy sxc )
Valore      E(sxc).
Eff.lat.    Accende un punto.
Spiegazioni E(sxx) deve essere un intero >=0, coordinata X. E(sxy) deve essere un intero, coordinata Y. E(sxc) deve essere un intero, solo i primi 24 bit sono significativi: R*65536+G*256+B , R, G, B tra 0 e 255.

Nome        *
Tipo        Matematica
Sintassi    ( * {sxi}+ )
Valore      Prodotto di  tutte le E(sxi).
Eff.lat.    Nessuno
Spiegazioni E(sxi) deve essere un numero altrimenti si ha un errore.

Nome        +
Tipo        Matematica
Sintassi    ( + {sxi}+ )
Valore      Somma di tutte le E(sxi).
Eff.lat.    Nessuno
Spiegazioni E(sxi) deve essere un numero altrimenti si ha un errore.

Nome        -
Tipo        Matematica
Sintassi    ( - {sxi}+ )
Valore      E(sx1)-E(sx2)- .. -E(sxi)  oppure -E(sx1) se si immette solo una s-espressione.
Eff.lat.    Nessuno
Spiegazioni E(sxi) deve essere un numero altrimenti si ha un errore.

Nome        /
Tipo        Matematica
Sintassi    ( / {sxi}+ )
Valore      E(sx1)/E(sx2)/ .. /E(sxi).
Eff.lat.    Nessuno
Spiegazioni E(sxi) deve essere un numero altrimenti si ha un errore. Se E(sxi) i>1  =0 si ha un errore di divisione per zero

Nome        1+
Tipo        Matematica
Sintassi    ( 1+ sx )
Valore      E(sx)+1.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore. Identica a ADD1.

Nome        1-
Tipo        Matematica
Sintassi    ( 1- sx )
Valore      E(sx)-1.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore. Identica a SUB1.

Nome        ABS
Tipo        Matematica
Sintassi    ( ABS sx )
Valore      Valore assoluto di E(sx).
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        ACOS
Tipo        Matematica
Sintassi    ( ACOS sx )
Valore      ACOS (E(sx)) ArcoCoseno.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        ADD1
Tipo        Matematica
Sintassi    ( ADD1 sx )
Valore      E(sx)+1.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore. Identica a 1+.

Nome        ASIN
Tipo        Matematica
Sintassi    ( ASIN sx )
Valore      ASIN (E(sx)) ArcoSeno.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        ATAN
Tipo        Matematica
Sintassi    ( ATAN sx )
Valore      ATAN (E(sx)) ArcoTangente.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        COS
Tipo        Matematica
Sintassi    ( COS sx )
Valore      COS (E(sx)) Coseno.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        COSH
Tipo        Matematica
Sintassi    ( COSH sx )
Valore      COSH (E(sx)) Coseno Iperbolico.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        EXP
Tipo        Matematica
Sintassi    ( EXP sx )
Valore      EXP (E(sx)) Calcola e^E(sx), e=2,7... numero di Nepero.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        FLOAT
Tipo        Matematica
Sintassi    ( FLOAT sx )
Valore      Converte E(sx) in un FLOAT.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        LOG
Tipo        Matematica
Sintassi    ( LOG sx )
Valore      LOG (E(sx))  Logaritmo Naturale.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        LOG10
Tipo        Matematica
Sintassi    ( LOG10 sx )
Valore      LOG10 (E(sx))  Logaritmo in base 10.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        MAX
Tipo        Matematica
Sintassi    ( MAX {sxn}+ )
Valore      Il massimo E(sxn).
Eff.lat.    Nessuno
Spiegazioni E(sxn) deve essere un numero.

Nome        MIN
Tipo        Matematica
Sintassi    ( MIN {sxn}+ )
Valore      Il minimo E(sxn).
Eff.lat.    Nessuno
Spiegazioni E(sxn) deve essere un numero.

Nome        REM
Tipo        Matematica
Sintassi    ( REM sx )
Valore      Parte dopo la virgola di E(sx).
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        ROUND
Tipo        Matematica
Sintassi    ( ROUND sx )
Valore      Converte E(sx) in INTERO troncando semplicemente i decimali, ES: E( (ROUND 4.99) )=4.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        SIN
Tipo        Matematica
Sintassi    ( SIN sx )
Valore      SIN (E(sx)) Seno.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        SINH
Tipo        Matematica
Sintassi    ( SINH sx )
Valore      SINH (E(sx))  Seno Iperbolico.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        SQRT
Tipo        Matematica
Sintassi    ( SQRT sx )
Valore      SQRT (E(sx)) Radice Quadrata.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        SUB1
Tipo        Matematica
Sintassi    ( SUB1 sx )
Valore      E(sx)-1.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore. Identica a 1-

Nome        TAN
Tipo        Matematica
Sintassi    ( TAN sx )
Valore      TAN (E(sx)) Tangente.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        TANH
Tipo        Matematica
Sintassi    ( TANH sx )
Valore      TANH (E(sx)) Tangente Iperbolica.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un numero altrimenti si ha un errore.

Nome        ATOM
Tipo        Predicato
Sintassi    ( ATOM sx )
Valore      T se E(sx)  un atomo, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        ENDP
Tipo        Predicato
Sintassi    ( ENDP sx )
Valore      T se E(sx)  NIL, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo CONS o NIL.

Nome        EQ
Tipo        Predicato
Sintassi    ( EQ {sxi}+ )
Valore      T se tutte le E(sxi) sono uguali tra loro, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato, controlla solo se i puntatori dei nodo sono uguali dunque funziona ad esempio con i numeri. Per un controllo pi profondo usare la funzione EQUAL

Nome        EQUAL
Tipo        Predicato
Sintassi    ( EQUAL {sxi}+ )
Valore      T se tutte le E(sxi) sono strutturalmente uguali tra loro, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato, controlla se le s-espressioni sono effettivamente uguali.

Nome        FUNCTIONP
Tipo        Predicato
Sintassi    ( FUNCTIONP sx )
Valore      T se E(sx)  una funzione, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato. Riconosce qualunque tipo di funzione: Sistema, Utente, Metodo, Accessore.

Nome        LISTP
Tipo        Predicato
Sintassi    ( LISTP sx )
Valore      T se E(sx)  un CONS oppure NIL, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        NULL
Tipo        Predicato
Sintassi    ( NULL sx )
Valore      T se E(sx)  NIL, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        NUMBERP
Tipo        Predicato
Sintassi    ( NUMBERP sx )
Valore      T se E(sx)  un  numero, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        STRING-EQUAL
Tipo        Predicato di Stringa
Sintassi    ( STRING-EQUAL {sx}+ )
Valore      T se tutte le E(sx) sono stringhe uguali tra loro ignorando il maiuscolo-minuscolo, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo stringhe.

Nome        STRING=
Tipo        Predicato di Stringa
Sintassi    ( STRING= {sx}+ )
Valore      T se tutte le E(sx) sono stringhe uguali tra loro, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo stringhe.

Nome        ACCESSORP
Tipo        Predicato di Tipo
Sintassi    ( ACCESSORP sx )
Valore      T se E(sx)  una funzione accessore, NIL  altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        CLASSP
Tipo        Predicato di Tipo
Sintassi    ( CLASSP sx )
Valore      T se E(sx)  una istanza di classe, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        CNAMEP
Tipo        Predicato di Tipo
Sintassi    ( CNAMEP sx )
Valore      T se E(sx)  un nome con i due punti (ES  :KEY) , NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        ENAMEP
Tipo        Predicato di Tipo
Sintassi    ( ENAMEP sx )
Valore      T se E(sx)  un nome con la e commerciale (ES  &KEY), NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        INTP
Tipo        Predicato di Tipo
Sintassi    ( INTP sx )
Valore      T se E(sx)  un intero, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        MACROP
Tipo        Predicato di Tipo
Sintassi    ( MACROP sx )
Valore      T se E(sx)  una macro definita con DEFMACRO, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        METHODP
Tipo        Predicato di Tipo
Sintassi    ( METHODP sx )
Valore      T se E(sx)  una funzione metodo definita con  DEFMETHOD, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        RATIOP
Tipo        Predicato di Tipo
Sintassi    ( RATIOP sx )
Valore      T se E(sx)  un rapporto, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        REALP
Tipo        Predicato di Tipo
Sintassi    ( REALP sx )
Valore      T se E(sx)  un float, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        STREAMP
Tipo        Predicato di Tipo
Sintassi    ( STREAMP sx )
Valore      T se E(sx)  uno stream, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        STRINGP
Tipo        Predicato di Tipo
Sintassi    ( STRINGP sx )
Valore      T se E(sx)  una stringa, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        SYSFUNCP
Tipo        Predicato di Tipo
Sintassi    ( SYSFUNCP sx )
Valore      T se E(sx)  un legame funzionale di sistema ad.es. CAR, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        UFUNCP
Tipo        Predicato di Tipo
Sintassi    ( UFUNCP sx )
Valore      T se E(sx)  una funzione utente definita con LAMBDA o DEFUN, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        CONSP
Tipo        Predicato di Tipo Principale
Sintassi    ( CONSP sx )
Valore      T se E(sx)  un CONS, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        SYMBOLP
Tipo        Predicato di Tipo Principale
Sintassi    ( SYMBOLP sx )
Valore      T se E(sx)  un SIMBOLO ATOMICO, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato. A differenza di ATOM riconosce solo i nomi. Esempio: E((ATOM 1)) = T , E((SYMBOLP 1)) = NIL.

Nome        VALUEP
Tipo        Predicato di Tipo Principale
Sintassi    ( VALUEP sx )
Valore      T se E(sx)  un NODO VALORE NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        <
Tipo        Predicato Numerico
Sintassi    ( < {sxi}+ )
Valore      T se E(sx1) < E(sx2) < .. < E(sxi), NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo numeri.

Nome        =
Tipo        Predicato Numerico
Sintassi    ( = {sxi}+ )
Valore      T se tutte le E(sxi) sono uguali tra loro, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo numeri.

Nome        =0
Tipo        Predicato Numerico
Sintassi    ( =0 sx )
Valore      T se E(sx)  Zero, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo numeri. Identica a ZEROP.

Nome        >
Tipo        Predicato Numerico
Sintassi    ( > {sxi}+ )
Valore      T se E(sx1) > E(sx2) > .. > E(sxi), NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo numeri.

Nome        EVENP
Tipo        Predicato Numerico
Sintassi    ( EVENP sx )
Valore      T se E(sx)  un numero pari oppure Zero, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo numeri interi.

Nome        MINUSP
Tipo        Predicato Numerico
Sintassi    ( MINUSP sx )
Valore      T se E(sx)  un numero negativo, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo numeri, con Zero ritorna NIL.

Nome        ODDP
Tipo        Predicato Numerico
Sintassi    ( ODDP sx )
Valore      T se E(sx)  un numero dispari, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo numeri interi. Con Zero ritorna NIL.

Nome        PLUSP
Tipo        Predicato Numerico
Sintassi    ( PLUSP sx )
Valore      T se E(sx)  un numero positivo, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo numeri, con Zero ritorna NIL.

Nome        ZEROP
Tipo        Predicato Numerico
Sintassi    ( ZEROP sx )
Valore      T se E(sx)  Zero, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta solo numeri. Identica a =0.

Nome        BREAK
Tipo        Sistema
Sintassi    ( BREAK )
Valore      T dopo la valutazione di CONTINUE.
Eff.lat.    Blocca la valutazione per permettere di osservare i legami locali.
Spiegazioni Utile per il debugging, vedi anche CONTINUE.

Nome        CONTINUE
Tipo        Sistema
Sintassi    ( CONTINUE )
Valore      Fa ritornare T al BREAK corrispondente.
Eff.lat.    Chiude il BREAK corrispondente effettuando un salto.
Spiegazioni E' la fuznione duale di BREAK e serve per riavviare l' ultima valutazione interrotta.

Nome        DRIBBLE
Tipo        Sistema
Sintassi    ( DRIBBLE sx )
Valore      T o NIL se c' qualche errore.
Eff.lat.    Apre o chiude il dribble file.
Spiegazioni Nel dribble file viene scritto tutto ci che appare sullo schermo. Se E(sx)  una stringa allora essa rappresenta il nome del dribble file che verr aperto e la funzione ritorna T, se  gi aperto un dribble file la funzione ritorna NIL. Se E(sx)  NIL allora viene chiuso il dribble file e la funzione ritorna T, se non c' un dribble file aperto la funzione ritorna NIL.

Nome        EXIT
Tipo        Sistema
Sintassi    ( EXIT )
Valore      Non ritorna nessun valore.
Eff.lat.    Chiude l'interprete e torna al sistema.
Spiegazioni Chiudendo l'interprete si cancella tutta la memoria.

Nome        FIXLIST
Tipo        Sistema
Sintassi    ( FIXLIST )
Valore      Lista di nodi FIX.
Eff.lat.    Nessuno
Spiegazioni Vedi il manuale tecnico.

Nome        GC
Tipo        Sistema
Sintassi    ( GC )
Valore      T.
Eff.lat.    Forza un Garbage Collection.
Spiegazioni Stampa delle informazioni sulla memoria in uso e su quella libera.

Nome        GET-GENV
Tipo        Sistema
Sintassi    ( GET-GENV )
Valore      Lista associativa contenente i legami speciali (quelli definiti con DEFVAR).
Eff.lat.    Nessuno
Spiegazioni Utile per il debugging soprattutto associata a BREAK.

Nome        GET-LENV
Tipo        Sistema
Sintassi    ( GET-LENV )
Valore      Lista associativa contenente i legami locali (chiamati anche legami fluidi).
Eff.lat.    Nessuno
Spiegazioni Utile per il debugging soprattutto associata a BREAK.

Nome        GET-TIME
Tipo        Sistema
Sintassi    ( GET-TIME )
Valore      Un Intero incrementato ogni millisecondo.
Eff.lat.    Nessuno
Spiegazioni Serve per leggere l' orologio del computer.

Nome        HASHSTAT
Tipo        Sistema
Sintassi    ( HASHSTAT )
Valore      T.
Eff.lat.    Stampa un riassunto della hashtable.
Spiegazioni Un punto '.' indica una entry vuota, un '#' indica una entry piena, un '*' indica una entry cancellata.

Nome        LOAD
Tipo        Sistema
Sintassi    ( LOAD {sxi}* )
Valore      T o NIL se c' qualche errore.
Eff.lat.    Legge i file LISP E(sxi).
Spiegazioni E(sxi) devono essere delle stringhe ad.es "TEST.LSP". La funzione legge e valuta tutte le s-espressioni dei file specificati.

Nome        OBLIST
Tipo        Sistema
Sintassi    ( OBLIST )
Valore      Lista con tutti gli oggetti globali dell'interprete.
Eff.lat.    Nessuno
Spiegazioni La lista contiene tutte le funzioni definite e tutti gli atomi globali.

Nome        STACKTRACE
Tipo        Sistema
Sintassi    ( STACKTRACE sx )
Valore      E(sx).
Eff.lat.    Se E(sx) non  NIL allora attiva la traccia dello stack in caso di errore.
Spiegazioni Utile per il debugging. Se E(sx)  NIL disattiva la traccia dello stack.

Nome        TRACE
Tipo        Sistema
Sintassi    ( TRACE sx )
Valore      T se non si stava gi tracciando la funzione E(sx), NIL altrimenti.
Eff.lat.    Marca la funzione sx come funzione tracciata.
Spiegazioni E(sx) deve essere una funzione, dopodich quando la funzione verr chiamata l' interprete si blocca e fa vedere i suoi parametri di ingresso e poi il suo valore in uscita. Utile per il debugging.

Nome        UNTRACE
Tipo        Sistema
Sintassi    ( UNTRACE sx )
Valore      T se la funzione sx era tracciata, NIL altrimenti.
Eff.lat.    Cancella la traccia della funzione E(sx).
Spiegazioni E(sx) deve essere una funzione,  il contrario di TRACE.

Nome        CLS
Tipo        Sistema Terminale
Sintassi    ( CLS )
Valore      T
Eff.lat.    Cancella la finestra di testo.
Spiegazioni Cancella lo schermo e mette il cursore in basso a sinistra.

Nome        CURPOS
Tipo        Sistema Terminale
Sintassi    ( CURPOS sxx sxy )
Valore      E(sxy).
Eff.lat.    Sposta il cursore nella finestra di testo.
Spiegazioni E(sxx), E(sxy) devono essere interi >0. La posizione 1,1  in basso a sinistra.

Nome        INPUT
Tipo        Sistema Terminale
Sintassi    ( INPUT )
Valore      S-espressione immessa da tastiera.
Eff.lat.    Legge dalla tastiera.
Spiegazioni Serve per leggere una s-espressione.

Nome        PRINT
Tipo        Sistema Terminale
Sintassi    ( PRINT {sxi}* )
Valore      L'ultima delle sxi valutata.
Eff.lat.    Stampa le E(sxi) sullo schermo.
Spiegazioni Serve per stampare le s-espressioni sullo schermo. Ogni tipo di dato ha una sua rappresentazione specifica, dunque le E(sxi) possono essere di qualsiasi tipo.

Nome        READ-LINE
Tipo        Sistema Terminale
Sintassi    ( READ-LINE sxLen sxStr )
Valore      Stringa letta da tastiera.
Eff.lat.    Legge dalla tastiera.
Spiegazioni Stampa la stringa E(sxStr) e permette di modificarla. E(sxLen)  un intero che specifica il numero massimo di caratteri accettati.

Nome        READCHAR
Tipo        Sistema Terminale
Sintassi    ( READCHAR )
Valore      Intero, codice ASCII del tasto premuto.
Eff.lat.    Legge dalla tastiera.
Spiegazioni Sospende l'esecuzione ed aspetta che si prema un tasto.

Nome        TEXTCOLOR
Tipo        Sistema Terminale
Sintassi    ( TEXTCOLOR sxFore {sxBack}? {sxAttr}? )
Valore      L'ultima delle sx valutata.
Eff.lat.    Cambia i colori al testo.
Spiegazioni E(sxFore) deve essere un intero, colore del carattere, 0 viene ignorato. E(sxBack) deve essere un intero, colore dello sfondo, 0 viene ignorato. E(sxAttr) deve essere un intero, attributi del carattere, 1 azzera gli attributi.

Nome        APPEND
Tipo        Standard
Sintassi    ( APPEND {sxi}+ )
Valore      Lista formata da tutte le E(sxi) appese una dietro l'altra.
Eff.lat.    Nessuno
Spiegazioni E(sxi) devono essere delle liste o NIL.

Nome        ASSOC
Tipo        Standard
Sintassi    ( ASSOC sxKey sxAlist {:TEST sxFunc}? )
Valore      Una coppia puntata di E(sxAlist).
Eff.lat.    Nessuno
Spiegazioni E(sxAlist) deve essere una lista associativa cio:((Key1 . Val1)...(KeyN . ValN) ). L'elemento prescelto sxElm  quello tale che (APPLY E(sxFunc) '(CAR sxElm) E(sxKey)) sia non NIL. se non viene trovato nessun elemento si ritorna NIL. La funzione di test di default  la EQ.

Nome        BACKQUOTE
Tipo        Standard
Sintassi    ( BACKQUOTE sx )
Valore      Lista sx con alcuni nomi atomici valutati.
Eff.lat.    Nessuno
Spiegazioni Sx deve essere una lista. Se in questa lista vi sono nomi atomici preceduti dalla virgola allora nel risultato verranno sostituiti dalla loro valutazione. Funzione utile nelle macro. Vedi DEFMACRO. NOTA 1: l'espressione "(COMA sx)"  equivalente a ",sx". NOTA 2: COMA NON E'UNA FUNZIONE.

Nome        CAR
Tipo        Standard
Sintassi    ( CAR sx )
Valore      Parte destra del cons E(sx).
Eff.lat.    Nessuno
Spiegazioni Se E(sx) non  un cons si ha un errore. Equivalente a FIRST.

Nome        CDR
Tipo        Standard
Sintassi    ( CDR sx )
Valore      Parte sinistra del cons E(sx).
Eff.lat.    Nessuno
Spiegazioni Se E(sx) non  un cons si ha un errore. Equivalente a REST.

Nome        COND
Tipo        Standard
Sintassi    ( COND { ( sxt { sxi }* ) }* )
Valore      L' ultima delle sxi valutate, le sxi in questione sono le prime da sinistra associate alla E(sxt) non NIL.
Eff.lat.    Nessuno
Spiegazioni Valuta da sinistra le sxt, la prima non NIL causa la valutazione di tutte le sxi nella stessa lista

Nome        CONS
Tipo        Standard
Sintassi    ( CONS sx1 sx2 )
Valore      ( E(sx1) . E(sx2) ).
Eff.lat.    Nessuno
Spiegazioni Crea una coppia puntata E(sx1) . E(sx2).

Nome        DEFCLASS
Tipo        Standard
Sintassi    ( DEFCLASS sxCName ( {sxSuperC}* ) ( { ( sxSName :ACCESSOR sxAName {:INITFORM sxInitform}? {:INITARG sxIName}? ) }* ) )
Valore      Lista di 3 liste (Superclassi Initforms Initargs).
Eff.lat.    Nessuno
Spiegazioni SxCName, sxSuperC, sxSName, sxAName, sxIName devono essere dei nomi atomici. E(sxInitform) viene assegnata di default al membro sxSName. Crea una dichiarazione di classe, allocando tutte le funzioni accessori sxAName. Vedere anche MAKE-INSTANCE. SxSuperC devono essere classi gi definite, sxAName non deve essere il nome di una funzione o accessore.

Nome        DEFMACRO
Tipo        Standard
Sintassi    ( DEFMACRO sxn ( {sx1}* {&OPTIONAL {sx2|(sx2 sx3)}+}? {&REST sx4}? {&KEY {sx5|(sx5 sx6)}+}? {&AUX {sx7|(sx7 sx8)}+}? ) sxi* )
Valore      Un nodo atomico senza nome con il legame funzionale ( LAMBDA sxp sxi ).
Eff.lat.    Crea un legame funzionale tra l'atomo E(sxn) alla forma ( LAMBDA sxp sxi ).
Spiegazioni E(sxn) deve essere un nome atomico. Vedere anche LAMBDA e DEFUN. A differenza di DEFUN la funzione non valuta i parametri attuali ed inoltre accoda l'ambiente locale preesistente, in modo che la macro sia equivalente ad una sostituzione lessicale.

Nome        DEFMETHOD
Tipo        Standard
Sintassi    ( DEFMETHOD sxn ( {sx1 | (sx1 sxc)}* {&OPTIONAL {sx2|(sx2 sx3)}+}? {&REST sx4}? {&KEY {sx5|(sx5 sx6)}+}? {&AUX {sx7|(sx7 sx8)}+}? ) sxi* )
Valore      Un nodo atomico senza nome con il legame funzionale al metodo definito.
Eff.lat.    Crea un legame funzionale tra l'atomo E(sxn) ed il metodo.
Spiegazioni E(sxn) deve essere un nome atomico. Funziona in modo simile a LAMBDA solo che  possibile definire pi metodi con lo stesso nome differenziati tra loro dalle classi dei parametri formali sxc. Sx1 sono i nomi atomici dei parametri formali. Sxc sono i nomi delle classi dei parametri formali, tali nomi differenziano i metodi a seconda delle classi a loro passate come parametri attuali.

Nome        DEFUN
Tipo        Standard
Sintassi    ( DEFUN sxn ( {sx1}* {&OPTIONAL {sx2|(sx2 sx3)}+}? {&REST sx4}? {&KEY {sx5|(sx5 sx6)}+}? {&AUX {sx7|(sx7 sx8)}+}? ) sxi* )
Valore      Un nodo atomico senza nome con il legame funzionale ( LAMBDA sxp sxi ).
Eff.lat.    Crea un legame funzionale tra l'atomo E(sxn) alla forma ( LAMBDA sxp sxi ).
Spiegazioni E(sxn) deve essere un nome atomico. Vedere anche LAMBDA e DEFMACRO. Chiamando la funzione si valutano i parametri attuali e li si assegnano ai parametri formali costruendo un nuovo ambiente locale che sostituisce quello vecchio.

Nome        DEFVAR
Tipo        Standard
Sintassi    ( DEFVAR { sxn {sxv}? }+ )
Valore      L' ultimo E(sxv) incontrato.
Eff.lat.    Lega il nome E(sxn) al valore E(sxv) creando per un legame speciale.
Spiegazioni Se non si specifica sxv si inizializza la variabile con NIL, se una variabile  gi definita globale allora la funzione non ha effetto.

Nome        DO
Tipo        Standard
Sintassi    ( DO ( {sxn sxv sxvi}* ) ( sxt {sxr}? ) {sxi}* )
Valore      E(sxr) oppure NIL se sxr non  specificata.
Eff.lat.    Nessuno
Spiegazioni Aggiunge le coppie ( sxn . E(sxv) ) all' ambiente locale, valuta le sxi, aggiorna i nomi sxn con i valori E(sxvi), finch E(sxt) non diventa T, a questo punto ritorna E(sxr). Si pu interrompere il ciclo con RETURN.

Nome        DO*
Tipo        Standard
Sintassi    ( DO* ( {sxn sxv sxvi}* ) ( sxt {sxr}? ) {sxi}* )
Valore      E(sxr) oppure NIL se sxr non  specificata.
Eff.lat.    Nessuno
Spiegazioni Aggiunge le coppie ( sxn . E(sxv) ) all' ambiente locale, valuta le sxi, aggiorna i nomi sxn con i valori E(sxvi), finch E(sxt) non diventa T, a questo punto ritorna E(sxr). A differenza di DO la valutazione di sxv e sxvi 'vede' quella delle precedenti sxv e sxvi. Si pu interrompere il ciclo con RETURN.

Nome        DOLIST
Tipo        Standard
Sintassi    ( DOLIST ( sxn sxl {sxr}? ) {sxi}* )
Valore      E(sxr) oppure NIL se sxr non  specificata.
Eff.lat.    Nessuno
Spiegazioni Crea la variabile locale sxn associandole il CAR di E(sxl), valuta tutte le sxi, aggiorna sxn con il secondo elemento si E(sxl) e cos via fino alla fine di E(sxl). Si pu interrompere il ciclo con RETURN.

Nome        DOTIMES
Tipo        Standard
Sintassi    ( DOTIMES ( sxn sxv {sxr}? ) {sxi}* )
Valore      E(sxr) oppure NIL se sxr non  specificata.
Eff.lat.    Nessuno
Spiegazioni Valuta in sequenza le sxi, ogni volta incrementando la variabile sxn da 0 a E(sxv). Si pu interrompere il ciclo con RETURN.

Nome        ELT
Tipo        Standard
Sintassi    ( ELT sxv sxe )
Valore      Elemento E(sxe)-esimo di E(sxv).
Eff.lat.    Nessuno
Spiegazioni E(sxv) deve essere una lista o una stringa, E(sxe) deve essere un intero >0.

Nome        EVAL
Tipo        Standard
Sintassi    ( EVAL sx )
Valore      E(E(sx)).
Eff.lat.    Nessuno
Spiegazioni Valuta E(sx).

Nome        FIRST
Tipo        Standard
Sintassi    ( FIRST sx )
Valore      Parte destra del cons E(sx).
Eff.lat.    Nessuno
Spiegazioni Se E(sx) non  un cons si ha un errore. Equivalente a CAR.

Nome        FUNCALL
Tipo        Standard
Sintassi    ( FUNCALL sxFunc {sxi}* )
Valore      Il valore ritornato dalla funzione E(sxFunc).
Eff.lat.    Nessuno.
Spiegazioni Serve per chiamare una funzione. Esempio: ( FUNCALL #'CONS 'LEFT '(RIGHT) ). Vedere anche FUNCTION e la abbreviazione #'

Nome        FUNCTION
Tipo        Standard
Sintassi    ( FUNCTION sx )
Valore      Legame funzionale di E(sx).
Eff.lat.    Nessuno
Spiegazioni Si pu abbreviare con #'sx. Si pu usare anche con SETF, esempio: (SETF #'PRIMO #'CAR).

Nome        GO
Tipo        Standard
Sintassi    ( GO label )
Valore      Nessuno.
Eff.lat.    Salta alla label della forma PROG corrispondente.
Spiegazioni Si usa in congiunzione con la funzione PROG. Label deve essere un nome atomico.

Nome        LAMBDA
Tipo        Standard
Sintassi    ( LAMBDA ( {sx1}* {&OPTIONAL {sx2|(sx2 sx3)}+}? {&REST sx4}? {&KEY {sx5|(sx5 sx6)}+}? {&AUX {sx7|(sx7 sx8)}+}? ) sx9+ )
Valore      Atomo anonimo con legame funzionale definito dalla LAMBDA.
Eff.lat.    Nessuno
Spiegazioni Serve per definire delle funzioni utente. Esempio: ( (LAMBDA ...) parametri ).

Nome        LAST
Tipo        Standard
Sintassi    ( LAST sx )
Valore      Ultimo elemento della lista E(sx).
Eff.lat.    Nessuno
Spiegazioni Se E(sx) non  una lista si ha un errore.

Nome        LENGHT
Tipo        Standard
Sintassi    ( LENGHT sx )
Valore      Intero rappresentante la lunghezza della lista E(sx).
Eff.lat.    Nessuno
Spiegazioni Se E(sx) non  una lista si ha un errore.

Nome        LET
Tipo        Standard
Sintassi    ( LET ( {sxn | (sxn sxv) }* ) {sxi}* )
Valore      L'ultima delle sxi valutate.
Eff.lat.    Nessuno
Spiegazioni Aggiunge le coppie ( sxn . E(sxv)) all' ambiente locale, poi valuta tutte le sxi. Sxn deve essere un nome atomico.

Nome        LET*
Tipo        Standard
Sintassi    ( LET* ( {sxn | (sxn sxv) }* ) {sxi}* )
Valore      L'ultima delle sxi valutate.
Eff.lat.    Nessuno
Spiegazioni Aggiunge le coppie ( sxn . E(sxv)) all'ambiente locale, poi valuta le sxi. A differenza di LET la valutazione di sxv 'vede' anche i legami sxn precedenti. Sxn deve essere un nome atomico.

Nome        LIST
Tipo        Standard
Sintassi    ( LIST {sxi}* )
Valore      Lista di tutte le E(sxi).
Eff.lat.    Nessuno
Spiegazioni Ritorna una lista ( E(sx1) E(sx2) ... E(sxn) ). Se non si specifica nessuna sxi allora ritorna NIL.

Nome        LOOP
Tipo        Standard
Sintassi    ( LOOP {sxi}* )
Valore      Quello specificato nella RETURN corrispondente.
Eff.lat.    Nessuno
Spiegazioni Valuta in sequenza tutte le sxi finch non si valuta una (RETURN sxr). Si ritorna E(sxr).

Nome        MAKE-INSTANCE
Tipo        Standard
Sintassi    ( MAKE-INSTANCE sxCName {sxIName sxValue}* )
Valore      Istanza di classe.
Eff.lat.    Nessuno
Spiegazioni SxCname deve essere un nome di classe. SxIname deve essere un nome di Initarg della classe o delle sue superclassi. SxValue  la s-espressione che, valutata, viene assegnata al membro identificato da sxIName. Vedere anche DEFCLASS.

Nome        MAPCAR
Tipo        Standard
Sintassi    ( MAPCAR sxFunc {sxLi}* )
Valore      Lista formata dalla valutazione delle sxFunc per ogni elemento nelle liste E(sxLi).
Eff.lat.    Nessuno
Spiegazioni E(sxLi) devono essere liste. Per ogni elemento della lista pi lunga si chiama la E(sxFunc) in modo da costruire una lista di risultati. Esempio: (MAPCAR #'+ '(1 2 3) '(4 5) '(6)). Vedere anche FUNCTION.

Nome        NCONC
Tipo        Standard
Sintassi    ( NCONC {sxi}+ )
Valore      Lista formata da tutte le E(sxi) appese una dietro l'altra.
Eff.lat.    Modifica i puntatori delle liste E(sxi) {tranne l'ultima}.
Spiegazioni E(sxi) devono essere delle liste o NIL. a differenza di APPEND, che rigenera le liste, questa funzione modifica i puntatori delle liste in modo da appenderle fisicamente una dietro l'altra.

Nome        PLIST
Tipo        Standard
Sintassi    ( PLIST sxn )
Valore      Legame lista di propriet del nome E(sxn).
Eff.lat.    Nessuno
Spiegazioni E'possibile utilizzarla con SETF. Esempio: (SETF (PLIST 'ATOMO) '( (SYM . VAL) ) ).

Nome        POP
Tipo        Standard
Sintassi    ( POP sxl )
Valore      Il primo elemento della lista E(sxl).
Eff.lat.    Rimuove fisicamente l'elemento dalla lista E(sxl).
Spiegazioni E(sxl) deve essere un legame ritornato da CAR, CDR, PLIST, FUNCION o da una valutazione normale. Esempio (SETF A '(1 2 3)) (POP A). Vedi anche PUSH, NCONC.

Nome        PROG
Tipo        Standard
Sintassi    ( PROG ( {sxn | (sxn sxv) }* ) {sxi}* )
Valore      L'ultima delle sxi valutate.
Eff.lat.    Nessuno
Spiegazioni Aggiunge le coppie ( sxn . E(sxv)) all'ambiente locale. Valuta in sequenza le sxi. Se una sxi  un nome atomico allora non lo valuta ma lo usa come label. Usando la funzione (GO label) si riporta la valutazione alla sxi dopo la label. RETURN interrompe la PROG.

Nome        PROG1
Tipo        Standard
Sintassi    ( PROG1 {sxi}+ )
Valore      La prima delle sxi valutate.
Eff.lat.    Nessuno
Spiegazioni Valuta tutte le sxi. Pu essere interrotta da RETURN.

Nome        PROGN
Tipo        Standard
Sintassi    ( PROGN {sxi}+ )
Valore      L'ultima delle sxi valutate.
Eff.lat.    Nessuno
Spiegazioni Valtuta tutte le sxi. Pu essere interrotta da RETURN.

Nome        PUSH
Tipo        Standard
Sintassi    ( PUSH sxv sxl )
Valore      E(sxl).
Eff.lat.    Appende in cima alla lista E(sxl) il valore E(sxv).
Spiegazioni Modifica i puntatori della lista E(sxl). Sxv pu essere una qualunque funzione che ritorna un legame cio CAR, CDR, PLIST, FUNCTION o una semplice valutazione che ritorna il legame valore del nodo. Esempio: (SETF A '(1 2 3)) (PUSH 0 A). Vedi anche POP, NCONC.

Nome        QUOTE
Tipo        Standard
Sintassi    ( QUOTE sx )
Valore      sx.
Eff.lat.    Nessuno
Spiegazioni Impedisce la valutazione di sx, pu essere abbreviato con l'apice '. Esempio: 'A == (QUOTE A)

Nome        REST
Tipo        Standard
Sintassi    ( REST sx )
Valore      Parte sinistra del cons E(sx).
Eff.lat.    Nessuno
Spiegazioni Se E(sx) non  un cons si ha un errore. Identica a CDR.

Nome        RETURN
Tipo        Standard
Sintassi    ( RETURN sx )
Valore      E(sx).
Eff.lat.    Salto.
Spiegazioni Rompe un ciclo LOOP, DO, DO*, PROGx facendoli restituire E(sx)

Nome        REVERSE
Tipo        Standard
Sintassi    ( REVERSE sx )
Valore      Lista E(sx) rovesciata.
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere una lista o NIL.

Nome        SET
Tipo        Standard
Sintassi    ( SET {sx1 sx2}+ )
Valore      E(sx2).
Eff.lat.    Associa al legame E(E(sx1)) il valore E(sx2).
Spiegazioni Se E(sx1) non  un nome si ha un errore. Funziona come SETF solo che se E(sx1) non produce un legame-valore allora valuta due volte E(sx1). Esempio: (SET (INPUT) 'VALORE), usando SETF questo esempio non funziona.

Nome        SETF
Tipo        Standard
Sintassi    ( SETF {sx1 sx2}+ )
Valore      E(sx2).
Eff.lat.    Associa al legame E(sx1) il valore E(sx2).
Spiegazioni Se E(sx1) non ritorna un legame si ha un errore. Il legame E(sx1) pu essere di qualunque tipo: VALORE, PLIST, FUNZIONE, CONS, MEMBRO DI CLASSE.

Nome        SETQ
Tipo        Standard
Sintassi    ( SETQ {sx1 sx2}* )
Valore      E(sx2).
Eff.lat.    Associa al nome sx1 il valore E(sx2).
Spiegazioni Se sx1 non  un nome si ha un errore. A differenza di SETF non valuta sx1 e dunque pu legare solo il valore di un atomo.

Nome        WHILE
Tipo        Standard
Sintassi    ( WHILE ( sxTest {sxRet}? ) {sxi}* )
Valore      E(sxRet) o NIL se non  specificata.
Eff.lat.    Nessuno
Spiegazioni Valuta sxTest, se  falsa ritorna E(sxRet), altrimenti valuta in sequenza le sxi e torna da capo rivalutando sxTest ecc...

Nome        AND
Tipo        Standard Logica
Sintassi    ( AND {sxi}* )
Valore      E(sxj)  Dove sxj  l'ultima s-espressione che valutata risulta diversa da NIL, se almeno una E(sxi)  NIL si ritorna NIL senza valutare le successive s-espressioni.
Eff.lat.    Nessuno
Spiegazioni AND senza argomenti ritorna NIL.

Nome        IF
Tipo        Standard Logica
Sintassi    ( IF sxTest sxTrue sxFalse )
Valore      E(sxTrue) se E(sxTest)  diversa da nil, altrimenti E(sxFalse).
Eff.lat.    Nessuno
Spiegazioni Valuta sempre sxTest poi valuta o sxTrue o sxFalse, mai tutte e due.

Nome        NOT
Tipo        Standard Logica
Sintassi    ( NOT sx )
Valore      T se E(sx)  NIL, NIL altrimenti.
Eff.lat.    Nessuno
Spiegazioni Accetta tutti i tipi di dato.

Nome        OR
Tipo        Standard Logica
Sintassi    ( OR {sxi}* )
Valore      E(sxj)  Dove sxj  la prima s-espressione che valutata risulta diversa da NIL, se tutte le E(sxi) sono NIL si ritorna NIL.
Eff.lat.    Nessuno
Spiegazioni OR senza argomenti ritorna NIL.

Nome        UNLESS
Tipo        Standard Logica
Sintassi    ( UNLESS sxTest {sxFalsei}* )
Valore      Se E(sxTest)  NIL allora valuta tutte le sxFalsei e ritorna l'ultima di queste valutata, altrimenti ritorna NIL.
Eff.lat.    Nessuno
Spiegazioni Se non si specifica nessuna sxFalsei allora ritorna NIL.

Nome        WHEN
Tipo        Standard Logica
Sintassi    ( WHEN sxTest {sxTruei}* )
Valore      Se E(sxTest)  diversa da NIL allora valuta tutte le sxTruei e ritorna l'ultima di queste valutata, altrimenti ritorna NIL.
Eff.lat.    Nessuno
Spiegazioni Se non si specifica nessuna sxFalsei allora ritorna NIL.

Nome        NAME2STR
Tipo        Stringa
Sintassi    ( NAME2STR sx )
Valore      Una stringa rappresentante il nome atomico E(sx).
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un nome atomico.

Nome        STR2ASCII
Tipo        Stringa
Sintassi    ( STR2ASCII sx )
Valore      Codice ASCII del primo carattere della stringa E(sx).
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere una stringa.

Nome        STR2INT
Tipo        Stringa
Sintassi    ( STR2INT sx )
Valore      Intero convertito dalla stringa E(sx).
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere una stringa rappresentante un numero intero. Non contano eventuali spazi prima e dopo il numero. Se la stringa non pu essere convertita la funzione ritorna *SYNTAX_ERROR*

Nome        STR2NAME
Tipo        Stringa
Sintassi    ( STR2NAME sx )
Valore      Converte la stringa E(sx) in un nome di atomo.
Eff.lat.    Nessuno
Spiegazioni Con questa funzione  possibile generare automaticamente nomi di atomi.

Nome        STR2REAL
Tipo        Stringa
Sintassi    ( STR2REAL sx )
Valore      Reale convertito dalla stringa E(sx).
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere una stringa rappresentante un reale anche in formato esponenziale. Non contano eventuali spazi prima e dopo il numero. Se la stringa  scorretta allora si ritorna *SYNTAX_ERROR*.

Nome        STRCAT
Tipo        Stringa
Sintassi    ( STRCAT {sxs}+ )
Valore      Stringa ottenuta dalla concatenazione delle E(sxs).
Eff.lat.    Nessuno
Spiegazioni Funziona solo con le stringhe.

Nome        STRLEN
Tipo        Stringa
Sintassi    ( STRLEN sx )
Valore      Lunghezza della stringa E(sx).
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere una stringa.

Nome        STRNUM
Tipo        Stringa
Sintassi    ( STRNUM sx )
Valore      Stringa di 1 carattere col codice ASCII uguale a E(sx).
Eff.lat.    Nessuno
Spiegazioni E(sx) deve essere un intero >=0 e <=255

Nome        STRPRINTF
Tipo        Stringa
Sintassi    ( STRPRINTF sxFormat {sxi}* )
Valore      Una stringa con le E(sxi) formattate secondo E(sxFormat).
Eff.lat.    Nessuno
Spiegazioni Serve per ottenere delle stampe formattate dei numeri.E(sxFormat) deve essere una stringa. E(sxi) devono essere ATOMI(stringhe %s), INTERI(long int %ld %lx %l), REALI(double %lf), STRINGHE(stringhe %s), RAPPORTI(double %lf), FUNZIONI DI SISTEMA(puntatori %p), FILE(puntatori %p). La stringa di formato segue la sintassi ANSI-C, usando gli specificatori di tipo messi, qu sopra, tra parentesi.

Nome        STRSUB
Tipo        Stringa
Sintassi    ( STRSUB sxStr sxFrom sxLen )
Valore      La sottostringa di E(sxStr) di lunghezza E(sxLen) e dalla posizione E(sxFrom).
Eff.lat.    Nessuno
Spiegazioni E(sxStr) deve essere una stringa. E(sxFrom) deve essere un numero >0. E(sxLen) deve essere un numero >=0.
