Programacin funcional - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

Programacin funcional

Description:

reas de aplicaci n y comparaci n con otros lenguajes funcionales ... Gofer. Haskell. Hope. Hugs. Miranda. No estrictos. Erlang. NESL. Oz. Pizza. Sisal. AspecT. Caml ... – PowerPoint PPT presentation

Number of Views:63
Avg rating:3.0/5.0
Slides: 25
Provided by: lscFie
Category:

less

Transcript and Presenter's Notes

Title: Programacin funcional


1
Programación funcional
  • Conceptos generales

2
Contenido
  • Listas y estructuras complejas
  • Áreas de aplicación y comparación con otros
    lenguajes funcionales

3
Listas y estructuras complejas
  • Las listas pueden ser de dos tipos
  • Vacías, es decir, el átomo NIL o ().
  • No vacías.

4
Listas y estructuras complejas
  • Par punteado o puntos pareja
  • Una celda cons es una estructura de registro que
    contiene dos componentes llamados car y cdr
  • Como un caso especial, un par punteado es una
    única celda cons y se representa mediante el car
    y el cdr encerrado entre paréntesis y separados
    por un punto rodeado por dos espacios en blanco
    ( . )
  • Para crear un par punteado
  • gt (setq L (cons a b))
  • (A . B)

5
Listas y estructuras complejas
Listas como árboles
A veces se utiliza el término árbol para
referirse a algunos CONS y todos los demás CONSES
accesibles a él de manera transitiva a través de
enlaces de CAR y CDR hasta alcanzar objetos
NO-CONS éstos NO-CONSES son conocidos como las
hojas del árbol.
6
Listas y estructuras complejas
  • Listas como pilas
  • Operaciones sobre pilas
  • pop
  • push
  • pushnew

7
Listas y estructuras complejas
Funciones generales sobre Listas
  • Construcción de listas
  • LIST ( list lt elemento1 gt ... lt elemento ngt )
  • MAKE-LIST ( make-list lt tamaño gt lt elemento
    inicial gt )
  • APPEND ( append lt lista1 gt ... lt lista n gt )
  • CONS ( cons lt elemento gt lt lista gt )
  • Acceso a listas
  • CAR ( car lt lista gt )
  • CDR ( cdr lt lista gt )
  • Remover elementos
  • REMOVE ( remove lt elemento gt lt lista gt )
  • REMOVE-DUPLICATES ( remove-duplicates lt lista gt )
  • Extracción de información
  • FIND ( find lt elemento gt lt lista gt )

8
Listas y estructuras complejas
  • Listas como conjuntos
  • La diferencia entre un conjunto y una lista es
    La no repetición de elementos en los conjuntos.
  • Las operaciones más habituales de conjuntos
  • member
  • union
  • intersection
  • set-difference
  • subsetp

9
Listas y estructuras complejas
  • Listas como tablas o a-list
  • Es una lista compuestas por pares de elementos
    (asociados)
  • El car de una a-list se llama clave y el cdr se
    conoce como dato (clave . dato)
  • Las operaciones más habituales sobre a-list son
  • assoc
  • acons
  • rassoc

10
Listas y estructuras complejas
Estructuras
  • (defstruct persona
  • (sexo nil)
  • (personalidad agradable))
  • (setf oc1-persona (make-persona))
  • (setf oc2-persona (make-persona sexo femenino))
  • (persona-sexo oc2-persona)
  • (setf (persona-sexo oc1-persona) femenino)
  • (persona-p oc1-persona)

11
Listas y estructuras complejas
Estructuras
  • Una estructura puede incluir campos de otra
  • (defstruct empleado
  • (pago salario))
  • (defstruct (programador ( include empleado))
  • (lenguaje-preferido lisp))

12
Listas y estructuras complejas
Estructuras
  • Las estructuras son componentes importantes de
    grandes sistemas.
  • Ventajas de las estructuras sobre las a-list
  • Los procedimientos de acceso para ocurrencias son
    eficientes.
  • Los campos de una estructura se definen de una
    vez y para siempre.

13
Listas y estructuras complejas
Clases y funciones genéricas
  • Qué hacer depende de lo que se haga.
  • (defstruct triangulo
  • (base 0)
  • (altura 0))
  • (defstruct rectangulo
  • (ancho 0)
  • (alto 0))
  • (defstruct circulo
  • (radio 0))

14
Listas y estructuras complejas
Clases y funciones genéricas
  • Métodos y funciones genéricas
  • Los métodos son procedimientos a partir de
    funciones genéricas por parte del tipo de
    argumentos. Se definen igual que las funciones
    con dos excepciones
  • Se usa DEFMETHOD en lugar de DEFUN.
  • La lista de parámetros se generaliza.
  • Las funciones genéricas son una colección de
    métodos que comparten el mismo nombre.

15
Listas y estructuras complejas
Clases y funciones genéricas
  • Ejemplo
  • (defmethod area ((figura triangulo))
  • ( ½
  • (triangulo-base figura)
  • (triangulo-altura figura)))
  • (defmethod area ((figura rectangulo))
  • ( (rectangulo-ancho figura)
  • (rectangulo-altura figura)))
  • (defmethod area ((figura circulo))
  • ( pi (expt (circulo-radio figura) 2)))

16
Listas y estructuras complejas
Clases y funciones genéricas
  • Las clases se parecen a las estructuras pero
    tienen diferencias importantes
  • Las clases están pensadas para vincularse con
    funciones genéricas.
  • Se tienen múltiples ligas de herencia.
  • Se debe ser más específico acerca de lo que
    deseamos DEFSTRUCT supone mucho, DEFCLASS supone
    poco.

17
Listas y estructuras complejas
Clases y funciones genéricas
  • Plantilla básica de defclass
  • (defclass ltnombre de la clasegt ltlista de
    superclases directasgt
  • ((ltnombre de la ranura 1gt accessor
    ltprocedimiento de acceso 1gt
  • initform ltforma par el valor inicial
    1gt
  • initarg ltsímbolo para marcar
    argumento 1)
  • ((ltnombre de la ranura ngt accessor
    ltprocedimiento de acceso ngt
  • initform ltforma par el valor inicial
    ngt
  • initarg ltsímbolo para marcar
    argumento n)

18
Listas y estructuras complejas
Clases y funciones genéricas
  • Ejemplo de clases
  • (defclass articulo()
  • ((titulo accessor articulo-titulo initarg
    titulo)
  • (autor accesor articulo-autor initarg
    autor)))
  • (defclass articulo-de-computacion (articulo) ())
  • (defclass articulo-de-politica (articulo) ())
  • (defclass amigo()
  • ((nombre accessor nombre-de-amigo initarg
    amigo)))
  • (defclass amigo-programador (amigo) ())
  • (defclass amigo-filosofo (amigo) ())

19
Listas y estructuras complejas
Clases y funciones genéricas
  • Las clases permiten heredar métodos
  • (defmethod proceso ((amigo amigo-programador)
  • (articulo articulo-de-computacion))
  • (imprime-notificacion articulo amigo))
  • (defmethod proceso ((amigo amigo-filosofo)
  • (articulo articulo))
  • (imprime-notificacion articulo amigo))
  • (proceso articulo amigo)

20
Listas y estructuras complejas
Clases y funciones genéricas
  • Otras características de los métodos
  • Métodos más específicos tienen prioridad sobre
    otros
  • El orden de los parámetros ayuda a determinar la
    prioridad del método
  • Los métodos pueden especializarse a ocurrencias
    individuales.

21
Áreas de aplicación y comparación con otros
lenguajes funcionales
Las áreas de aplicación son
  • Principalmente la Inteligencia artificial.
  • Computación numérica y simbólica.
  • Diseño asistido por computadora

22
Áreas de aplicación y comparación con
Dentro del área de la IA
  • Procesamiento del lenguaje natural
  • Percepción y reconocimiento de patrones
  • Otras aplicaciones de la IA como
  • Juegos
  • Programación inteligente y programación
    automática
  • Sistemas expertos
  • Sistemas de planificación
  • Redes Neuronales
  • Algoritmos genéticos
  • Robótica

23
Áreas de aplicación y comparación con
Comparación con otros lenguajes funcionales Otros
lenguajes funcionales
24
Áreas de aplicación y comparación con
Comparación con otros lenguajes funcionales
La suma de 1 hasta 10
En Scheme (define sum (lambda (from total)
(if (0 from) total (sum
(- from)( total from))))) (sum 10 0)
En C total 0 For (i 1 i lt10
i) total1
En Haskell sum 1..10
En SML let fun sum i tot if i 0 then tot
else sum (i-1) (toti) in sum 10 0 end
Write a Comment
User Comments (0)
About PowerShow.com