Clase 15/9 - Individuos compuestos

publicado a la‎(s)‎ 15 sept. 2010 19:25 por Guillermo Polito   [ actualizado el 16 sept. 2010 7:10 por Nicolas Passerini ]


Qué vimos hoy:

  • Repaso forall
  • Pattern matching y unificación
  • Indivíduos compuestos:
    • Functores
    • Listas
En detalle:

1) Hasta ahora habíamos visto solo indivíduos simples: átomos y números.  Ahora agregamos:

- functores: son indivíduos compuestos que nos sirven para agrupar otros indivíduos (compuestos o simples).  Tienen un nombre y una aridad.  Su tamaño es fijo.
- listas: son indivíduos compuestos que nos sirven para hacer operaciones sobre un conjunto en su totalidad (i.e. sumar todos los elementos, o saber la cantidad).  Su tamaño es variable, y no tienen nombre.

2) Hablamos un poquito de unificación y pattern matching.

Unificación es el proceso mediante el cual dos elementos se consideran iguales.  Para verificar que dos elementos sean iguales, se lleva a cabo una verificación de patrones, o pattern matching, que dice si esos dos elementos calzan.

- Todo indivíduo matchea o calza con una variable sin ligar.
- Los functores matchean con functores que tengan el mismo nombre y aridad, y que además matcheen sus componentes.

3) Predicados sobre listas

- lenght/2
- sumlist/2
- member/2

Además vimos un nuevo predicado de orden superior: findall/3, que se usa de la siguiente manera:

hijosDe(Alguien) :- findall( Hijo, padre(Alguien, Hijo), Hijos).

Y se interpreta como: Encontra todos los Hijo que cumplan la condicion padre(Alguien,Hijo), y ligá la variable Hijos con la lista con todos los resultados.

También notamos que tiene los mismos problemas de inversibilidad que el forall/2 o el not/1.  Ojo con eso!

Tarea para la próxima clase:

No hay :)

¿Cómo podemos practicar listas, functores y todas esas cosas?

En las guias de ejercicios 3 y 4 van a encontrar ejercicios para hacer
https://sites.google.com/site/paradigmasdeprogramacion/material/guas-de-ejercicios

ó para practicar forall, not, functores y algo de aritmética (nada de listas):

Ejercicio de los ferreteros


¿De donde seguimos leyendo?

Comments