LISP – Unidad II Nombre: Alcántara Bustamante José Luis
Grupo: 82T
INSTITUTO TECNOLÓGICO DE LÁZARO CÁRDENAS
Carrera: Ingeniería en Sistemas Computacionales
Asignatura: Programación Lógica y Funcional Unidad I – Actividades Complementarias
Profesor: José Antonio López Tello
Alumnos: Alcántara Bustamante José Luis
Lugar y Fecha: Cd. Y puerto Lázaro Cárdenas, Michoacán a 25 de febrero del 2019.
Programación Lógica y Funcional
Página 1
LISP – Unidad II Nombre: Alcántara Bustamante José Luis
Grupo: 82T
CONTENIDO 1.
El lenguaje LISP ............................................................................................................. 3 1.1. Descripción .................................................................................................................. 3 1.2. Los objetos básicos (s-expresión) ................................................................................ 3 1.2.1. Los átomos. ........................................................................................................... 4 1.2.1.1 Los símbolos ....................................................................................................... 4 1.2.1.2 Los números........................................................................................................ 4 1.2.1.3 Las cadenas de caracteres. ................................................................................. 4 1.2.2 Las listas. ............................................................................................................... 4
Bibliografía ............................................................................................................................. 6
Programación Lógica y Funcional
Página 2
LISP – Unidad II Nombre: Alcántara Bustamante José Luis
Grupo: 82T
1. El lenguaje LISP 1.1. Descripción John MacCarthy et. al (1965) señalan que el lenguaje LISP está diseñado principalmente para el procesamiento de datos simbólicos. Ya que se ha utilizado para cálculos simbólicos en cálculo diferencial e integral, teoría de circuitos eléctricos, lógica matemática, juegos y otros campos de inteligencia artificial. LISP es un lenguaje matemático formal, por lo tanto, es posible dar una descripción concisa pero completa de la misma. Tal es el propósito de esta primera sección del manual. Otras secciones describirán las formas de utilizar LISP en forma ventajosa y explicarán las extensiones del lenguaje que lo convierten en un sistema de programación conveniente. LISP se diferencia de la mayoría de los lenguajes de programación en tres formas importantes. La primera forma es en la naturaleza de los datos. En el lenguaje LISP, todos los datos se encuentran en forma de expresiones simbólicas, generalmente denominadas expresiones-S. Las expresiones S son de longitud indefinida y tienen un tipo de estructura de árbol ramificado, de modo que las subexpresiones significativas se pueden aislar fácilmente en el sistema de programación LISP, la mayor parte de la memoria disponible se utiliza para almacenar expresiones S en forma de estructuras de lista. Este tipo de organización de memoria libera al programador de la necesidad de asignar almacenamiento para las diferentes secciones de su programa. 1.2. Los objetos básicos (s-expresión) Alonso (1991) nos señala que los objetos que se usan en Lisp se llaman S–expresiones (por “Symbolic expressions”). Estos objetos se clasifican en los siguientes tipos:
Figura 1. Clasificación de las s-expresiones. Fuente: (Alonso, 1991, pág. 2).
Para referirnos a dichos objetos, usaremos las siguientes abreviaturas:
s a simb n l
s–expresión atomo síımbolo número lista
Programación Lógica y Funcional
Página 3
LISP – Unidad II Nombre: Alcántara Bustamante José Luis
Grupo: 82T
1.2.1. Los átomos. 1.2.1.1 Los símbolos “Los símbolos son cadenas continuas de caracteres (conteniendo al menos un carácter no numérico). Por ejemplo, AGUA, A12, VAR-AUX, + son símbolos.” (Alonso, 1991, pág. 2). 1.2.1.2 Los números “GCLISP manipula números enteros sobre 16 bits (permitiendo calcular en el intervalo [−215 + 1, 215 − 1], i.e. [-32767, 32767]) y números flotantes sobre 128 bits (permitiendo calcular en el intervalo [-1.0F+38, 1.0F+38]).” (Alonso, 1991, pág. 2). 1.2.1.3 Las cadenas de caracteres. “Una cadena de caracteres es una sucesión de caracteres, con o sin huecos, que comienza y termina por dobles comillas. Por ejemplo, “A 1 23” es una cadena de caracteres.” (Alonso, 1991, pág. 2). En otras palabras, el tipo de s-expresión más elemental es el símbolo atómico, el cual, John et. al (1965) afirman que es una cadena que no puede tener más de treinta caracteres y que, a la vez, siempre debe empezar por una letra, más no por un número o cualquier otro carácter. Por ejemplo: A APPLE PART2 ALCANTARA AABL970311
Esos símbolos son llamados atómicos debido a que se toman como un todo, ya que no pueden dividirse dentro de LISP en caracteres individuales. 1.2.2 Las listas. Una lista es una sucesión ordenada, posiblemente vacía, de objetos. Sintácticamente, se compone de un paréntesis abierto, objetos separados por huecos y un paréntesis cerrado. Por ejemplo: (A,1,B), (), (A(B(C)))
…son listas.
Programación Lógica y Funcional
Página 4
LISP – Unidad II Nombre: Alcántara Bustamante José Luis
Programación Lógica y Funcional
Grupo: 82T
Página 5
LISP – Unidad II Nombre: Alcántara Bustamante José Luis
Grupo: 82T
Bibliografía McCarthy, J., & Levin, M. I. (1965). LISP 1.5 programmer's manual. MIT press. Recuperado de: https://books.google.com.mx/books?hl=es&lr=&id=68j6lEJjMQwC&oi=fnd&pg=PA1&dq =lisp&ots=Ikv0l4Zyxq&sig=n9G0tDxQjZqP-Pj6mwssvT5dDsA José A. Alonso Jiménez. (1991). Manual de Lisp. Sevilla, España: Dpto. de Álgebra, Computación, Geometría y Topología de la Universidad de Sevilla. Recuperado de: http://www.cs.us.es/~jalonso/pub/1991-Lisp-manual.pdf
Programación Lógica y Funcional
Página 6