LISP/RESUMEN_1.txt



xsetf		(setf {sitio valor}* )
	Asigna a sitio el valor que se ponga. Si sitio es una variabla se comporta como setq
	Si se trata de una funcion de acceso (como car, cdr, etc.) se asigna al resultado de
	esa funcion el valor dado.
setq		(setq {variable valor}*)
	Forma especial que asigna valores a una o varia variables.
	Devuelve el resultado de la ultima asignacion.
list		(list argumentos)
	Funcion que construye y devuelve una lista con sus argumentos
'	(apostrofe) devuelve su argumento sin evaluar
dolist		(dolist variable Lista [resultado])
	Hace iteraciones sobre lista
	ejemplo: (dolist (ele Lista 'fin)(print ele))
car		(car Lista)
	Devuelve el primer elemento de una lista
cdr		(cdr Lista)
	Devulve el resto de una lista
nthcdr		(nthcdr n Lista)
	Devulve el resultado de hacer tantos cdr como se indiquen
cons		(cons 1er_elemento Resto_de_la_Lista)
	Crea y devuelve una nueva celda CONS.
	Si el 2o. elemento no es una lista se obtiene un par con punto
eql		(eql objeto1 objeto2)
	Comprueba si 2 objetos son identicos o son numeros del mismo tipo y con el
	mismo valor, o caracteres que representan el mismo caracter.
equal		(equal objeto1 objeto2)
	Predicado que comprueba si dos objetos poseen estructura similar
null		(null objeto)
	Predicado que devuelve true si el objeto es nil y vis.
append		(append Lista1 Lista2)
	Une a 2 listas en una sola
length		(length Lista)
	Regresa el numero de elementos de Lista
zerop		(zerop obj)
	Comprueba si un objeto es el cero
mapcar		(mapcar funcion lista &rest mas-listas)
		ejemplo: (mapcar #'second '((a b c) (d e f) (g h i)))
	Aplica una funcion a los elementos de una lista o conjunto de listas
if		(if test forma-then &rest formas-else)
	ejemplos:
		(setf x 'a)
		(if (eql x 'a) 'cierto 'falso)
case
	ejemplos:
		(defun funcion1 (arg)
			(case arg
				(libro (format t "~%es un libro"))
			((casa puerta) (format t "~%es puerta o casa"))))
string-upcase		(string-upcase var)
		convierte el contenido de var a mayusculas
string-downcase		(string-downcase var)
		convierte el contenido de var a minusculas

__________________
CICLOS
==================
ejemplo de "do"		; CICLOS
	(defun ciclo (numero)
		(do  ((n 1 (1+ n)))	; variables
			((> n numero) 'fin);	condiciOn fin del ciclo
			(print n)
		)
	)
ejemplo de "dolist"	; UNA ITERACION POR CADA ELEMENTO DE LA LISTA
	(defun ciclo (lista)
		(dolist (elemento lista in)
			(print elemento)
		)
	)
ejemplo de "dotimes"	; UN NUMERO DETERMINADO DE ITERACIONES
	(defun ciclo (numero)
		(dotimes (n numero 'fin)
			(print n))
	)
ejemplo de "loop"	; REPETIR ITERACIONES HASTA ENCONTRAR UNA FORMA DE SALIDA
	(defun contar-hasta (n)
		(let ((cont 1))
			(loop
				(if (>= cont n) (return n))
				(print cont)
				(setf cont (1+ cont))))
	)
___________________
ARREGLOS
===================
arreglo
	(make-array '(50 50):initial-element 0)		CREA UN ARREGLO DE 50x50 LLENO DE CEROS
	(setf Arreglo (make-array '(2 3)))		CREA UN ARREGLO DE 2x3
	(aref Arreglo 1 2)				MUESTRA AL ELEMENTO (2, 3) DEL ARREGLO
arreglo de bits
	(setf AdeB (make-array '(2 4):initial-contents '((1 0 1 1) (0 0 1 1)) :element-type 'bit))	CREA UN ARREGLO DE BITS DE 2x4
	(aref AdeB 0 1)			OBTIENE AL ELEMENTO (0, 1) DEL ARREGLO
	(setf (aref AdeB 0 1) 1)	MODIFICA AL ELEMENTO (0, 1) CON UN uno