Exposicion LISP

19
LISP LISt Processing (Proceso de LIStas)

description

,k

Transcript of Exposicion LISP

LISP

LISPLIStProcessing (Proceso de LIStas)INTRODUCCIONORGINE: 1958JOHN McCARTHYUSO HABITUAL EN INTELIGENCIA ARTIFICIALLIST PROCESSING

CARACTERISTICAS BASICASLENGUAJE INTERPRETADOTODAS LAS VARIABLES SON PUNTEROSLIBERACION AUTOMATICA DE MEMORIAEFICIENCIA MENOR QUE OTROS LENGUAJESADECUADO PARA PROTOTIPADOS Y CALCULO SIMBOLICOLENGUAJE DE PROGRAMACION MAS SIMPLE QUE EXISTEDATOSCADENASSON ATOMOS Y PUEDEN TENER CUALQUIER CARCTERUTILIZAN LA REPRESENTACION HABITUAL DE CARACTERESNUMEROSLISP PERMITE ALMACENAR EN LAMEMORIA DE DATOS ATOMOS DE TIPO NUMERICOUTILIZAN UN PUNTO PARA DENOTAR LA COMA DECIMALSIMBOLOSSON NOMBRESDOS DIGITOS DE DISTINTO NOMBRE SE CONSIDERAN COMO SIMBOLOS DISTINTOSOPERACIONESEXPRESIONFORMA EN LISPH + 2(+ H 2)H + 2 + I(+(+H 2)I)H + 2 * I(+H(*2 I))SUM(X)/N(/(SUM X)N)ATOMOSEjemplos de tomosHolaCasaMientrasUno34F4fg55456dgfvComienza con dgito.Ab cdIncluye un espacio entre medio.%bcNo comienza con una letra.A5.)Incluye caracteres que no son ni letras ni dgitos.Ejemplos de no tomosLISTAS(ESTA ES UNA LISTA)(ESTALISTAESDISTINTAALAANTERIOR)(ESTA LISTA (TAMBIEN) ES DISTINTA)((ESTA ES OTRA) (POSIBILIDAD DE LISTA))LISTANMERO DE TRMINOSTRMINOS(HOLA)1HOLA(ESTA ES UNA LISTA)4ESTA, ES, UNA, LISTA((AB T56) HOLA ())3(AB T56), HOLA, ()COMANDOS

FUNCIONQUOTENUMERO DE ARGUMENTOS1ARGUMENTOSUn trmino cualquiera.RETORNAEl argumento.OPERACINRESULTADO(QUOTE(ESTA ES UNA PRUEBA))(ESTA ES UNA PRUEBA)(QUOTE((ESTA)(ES UNA)PRUEBA))((ESTA)(ES UNA)PRUEBA)(QUOTE HOLA)HOLA(QUOTE(())()COMANDOSFUNCIONCARNUMERO DE ARGUMENTOS1ARGUMENTOSLista no vaca.RETORNAEl primer trmino de la lista.OPERACINRESULTADO(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)COMANDOSFUNCIONCDRNUMERO DE ARGUMENTOS1ARGUMENTOSLista no vaca.RETORNAEl resto de la lista que queda despus de borrar el primer trmino.OPERACINRESULTADO(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))COMANDOSFUNCIONATOMNUMERO DE ARGUMENTOS1ARGUMENTOSCualquier trmino.RETORNAT si el argumento es un tomo; NIL en otro caso.OPERACINRESULTADO(ATOM(QUOTE ABC54))T(ATOM(QUOTE(UN EJEMPLO)))NILATOM(ABC54)TATOM(ESTO ES UN EJEMPLO)NILCOMANDOSFUNCIONCONSNUMERO DE ARGUMENTOS2ARGUMENTOS1. Cualquier trmino; 2. Una Lista cualquiera.RETORNAUna lista, tal que su CAR es el primer argumento, y su CDR es el segundo argumento.OPERACINRESULTADO(CONS(QUOTE(ESTA ES)QUOTE(UNA PRUEBA)))((ESTA ES)UNA PRUEBA)(CONS(QUOTE ESTA)(QUOTE()))(ESTA)COMANDOSFUNCIONEQNUMERO DE ARGUMENTOS2ARGUMENTOSDos trminos.RETORNAT si ambos tomos son iguales; NIL en otro caso.OPERACINRESULTADOEQ(HOLA HOLA)TEQ(HOLA B)NIL(EQ(QUOTE HOLA)(QUOTE HOLA))T(EQ(QUOTE G)(QUOTE HOLA))NILCOMANDOS

FUNCIONNULLNUMERO DE ARGUMENTOS1ARGUMENTOSCualquier trmino.RETORNAT si el argumento es una lista vaca [()]; NIL en otro caso.OPERACINRESULTADONULL(())TNULL((()))NILNULL(ESTA ES UNA PRUEBA)NIL(NULL(QUOTE()))TFUNCIONES EN LISPabsandappendapplyassocmapcarcdrclosecondmapcdifference (-)defun (de,df)dm(macro)eqequalevalexplodefunctiongensymgetgetdgogreaterp(gt)internlambdalengthlistmapcanmapcarlessp (It)exptfixfixpfloatfloatpmapconmaplistmaxminnconcnotnumberpnullopenorprincprintprin1progprognputquote (')quotient (/)readremainderremobrempropreturnreverserplacarplacdsetsetqsubstplus (+)terpritimes (*)consatomFUNCIONES EN LISPabsandappendapplyassocmapcarcdrclosecondmapcdifference (-)defun (de,df)dm(macro)eqequalevalexplodefunctiongensymgetgetdgogreaterp(gt)internlambdalengthlistmapcanmapcarlessp (It)exptfixfixpfloatfloatpmapconmaplistmaxminnconcnotnumberpnullopenorprincprintprin1progprognputquote (')quotient (/)readremainderremobrempropreturnreverserplacarplacdsetsetqsubstplus (+)terpritimes (*)consatomOTRAS FUNCIONES(defun nombre macro (parmetro) e1 e2 ... en) define una funcion

(nombre argumentos) invoca una funcin

(while X Y) un ciclo

(COND (condition1 result1 ) (condition2 result2 )(T resultN ) ) if

EJEMPLO(print "Hola Mundo!")EJEMPLOS(DEFUN factorial (N) (COND ((ZEROP N) 1) (T (* N (factorial (- N 1)) ) ) ) )