Qué vimos hoy:
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 hacerhttps://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? |
Cursos > Martes-Miércoles-Jueves Mañana > Cuatrimestres Anteriores > Clases Lógico y Funcional 2c2010 >