Comandos en LISP

Listado y explicacion de los Comandos en LISP.

Principales comandos que aqui explicaremos: QUOTE,  CAR, CDR, CONS, ATOM, EQ, NULL

 

  1. Comando QUOTE

 

FUNCION           :  QUOTE

NUMERO DE ARGUMENTOS  :

1

ARGUMENTOS            :

Un

término cualquiera.

RETORNA               :

El

argumento.

EJEMPLOS

OPERACIÓN

RESULTADO

(QUOTE(ESTA ES UNA PRUEBA))

 

 

(ESTA ES UNA PRUEBA)

(QUOTE((ESTA)(ES UNA)PRUEBA))

 

 

((ESTA)(ES UNA)PRUEBA)

(QUOTE HOLA)

 

 

HOLA

(QUOTE(())

 

 

()

Notar que QUOTE devuelve lo mismo que recibe; aparentemente esto no tiene mucho sentido, no obstante, la utilidad de este comando aparece cuando se utiliza, por ejemplo, el comando CAR entre paréntesis, por ejemplo:

(CAR(A B C))

En este caso, CAR buscará el primer elemento de la lista que genere la función A, pero como A no es una función (a menos que se defina como tal) generará un error. La sentencia correcta sería:

(CAR(QUOTE(A B C))

Un error común es escribir algo así:

(CAR(QUOTE ERROR))

Ya que en este caso QUOTE retorna el átomo ERROR, y CAR debe recibir como argumento una lista (ver definición siguiente).


  1. Comando CAR

 

FUNCION           :  CAR

NUMERO DE ARGUMENTOS  :

1

ARGUMENTOS            :

Lista no vacía.

RETORNA               :

El primer término

de

la

lista.

EJEMPLOS

OPERACIÓN

RESULTADO

(CAR(QUOTE((ESTA) ES UNA PRUEBA)))

(ESTA)

(CAR(QUOTE((ESTA ES UNA PRUEBA))))

(ESTA ES UNA PRUEBA)

(CAR (QUOTE(()(ESTA ES UNA PRUEBA))))

()

(CAR(QUOTE (ESTA ES UNA PRUEBA)))

(ESTA ES UNA PRUEBA)

Un error común que se comete es algo como lo siguiente:

CAR ((ESTO ES)(UN ERROR))

El primer paréntesis es para indicar que se incluirá el argumento de CAR, lo que no identifica a una lista, luego, en el argumento van dos listas en vez de una, que serían ESTO ES y UN ERROR. Esto se corrige haciendo la llamada:

CAR(((ESTO NO ES)(UN ERROR)))
Generalizando tenemos que cualquier comando que trabaje con una o más listas como argumento debe encerrarlas entre paréntesis, no así con los átomos (ver la aplicación del comando QUOTE).

  1. Comando CDR

 

FUNCION

:  CDR

NUMERO DE ARGUMENTOS

:

1

ARGUMENTOS

:

Lista no vacía.

RETORNA

:

El resto de la lista

que

queda

 

 

después  de  borrar

el

primer

 

 

término.

 

 

EJEMPLOS

OPERACIÓN

RESULTADO

(CDR(QUOTE(ESTA ES UNA PRUEBA)))

 

(ES UNA PRUEBA)

(CDR(QUOTE((ESTA ES)UNA PRUEBA)))

 

(UNA PRUEBA)

 

(CDR(QUOTE((ESTA ES UNA PRUEBA))))

()

(CDR(QUOTE(()(ESTA ES UNA PRUEBA))))

((ESTA ES UNA PRUEBA))

Las restricciones para CDR son iguales que para CAR.


  1. Comando CONS

 

FUNCION

:  CONS

NUMERO DE ARGUMENTOS

:

2

ARGUMENTOS

:

1.  Cualquier  término;  2.  Una

 

 

Lista cualquiera.

RETORNA

:

Una lista, tal que su CAR es el

 

 

primer argumento, y su CDR es

 

 

el segundo argumento.

EJEMPLOS

OPERACIÓN

RESULTADO

(CONS(QUOTE(ESTA    ES)QUOTE(UNA PRUEBA)))

((ESTA ES)UNA PRUEBA)

(CONS(QUOTE ESTA)(QUOTE()))

(ESTA)

 

  1. Comando ATOM

FUNCION           :  ATOM

NUMERO DE ARGUMENTOS  :

1

ARGUMENTOS            :

Cualquier término.

RETORNA               :

T si el argumento

es

un

átomo;

 

NIL en otro caso.

 

 

 

EJEMPLOS

OPERACIÓN

RESULTADO

(ATOM(QUOTE ABC54))

 

 

T

(ATOM(QUOTE(UN EJEMPLO)))

 

 

NIL

ATOM(ABC54)

 

 

T

ATOM(ESTO ES UN EJEMPLO)

 

 

NIL

 

  1. Comando EQ

FUNCION           :  EQ

NUMERO DE ARGUMENTOS  :

2

ARGUMENTOS            :

Dos términos.

RETORNA               :

T si ambos átomos

son

iguales;

 

NIL en otro caso.

 

 

EJEMPLOS

OPERACIÓN

RESULTADO

EQ(HOLA HOLA)

 

 

T

EQ(HOLA B)

 

 

NIL

(EQ(QUOTE HOLA)(QUOTE HOLA))

 

 

T

(EQ(QUOTE G)(QUOTE HOLA))

 

 

NIL


 

  1. Comando NULL

FUNCION           :  NULL

NUMERO DE ARGUMENTOS  :

1

ARGUMENTOS            :

Cualquier término.

RETORNA               :

T si el argumento

es una lista

 

vacía [()]; NIL en

otro caso.

EJEMPLOS

OPERACIÓN

RESULTADO

NULL(())

 

 

T

NULL((()))

 

 

NIL

NULL(ESTA ES UNA PRUEBA)

 

 

NIL

(NULL(QUOTE()))

 

 

T

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *