Bitácora

Clase 7 - Recuperatorio

publicado a la‎(s)‎ 13 jun. 2017 14:11 por Nahuel Palumbo   [ actualizado el 13 jun. 2017 14:11 ]

Clase 5 - Lógico - Parcial

publicado a la‎(s)‎ 30 may. 2017 14:25 por Nahuel Palumbo   [ actualizado el 30 may. 2017 14:25 ]

Clase 4 - Lógico - Simulacro

publicado a la‎(s)‎ 23 may. 2017 7:32 por Nahuel Palumbo   [ actualizado el 23 may. 2017 21:11 ]

Trabajamos con este parcial de Programadoreshttps://docs.google.com/document/d/1UNjdADkjdKSnz35oh7yGyZpY9VHeZuhASO6-_RBPQF4/edit#

También les recomendamos leer el Módulo 6 que explica cosas a tener en cuenta para la resolución de un ejercicio de lógico!

Dejamos una solución hecha en clase (gracias Marina!)

Clase 3 - Lógico - forall + Functores

publicado a la‎(s)‎ 23 may. 2017 7:29 por Nahuel Palumbo   [ actualizado el 23 may. 2017 7:29 ]

En esta clase aprendimos un nuevo cuantificador: para todo. Es un predicado de orden superior llamado forall/2.
Luego vimos una nueva clase de individuos: los Functores.
Esto se explica los apuntes:
Y tienen la práctica en Mumuki:
También les dejamos el código de ejemplo con el que estuvimos trabajando en clase.

Clase 2 - Lógico - Inversibilidad, negación y aritmética

publicado a la‎(s)‎ 6 may. 2017 16:14 por Nahuel Palumbo   [ actualizado el 6 may. 2017 16:14 ]

Luego de repasar los conceptos básicos del paradigma lógico vistos la clase anterior con el ejemplo del árbol genealógico de Los Simpsons (podrán encontrar el archivo acá abajo).
Estuvimos viendo:
  • Recursividad en lógico: obteniendo todos los descendientes de una persona.
  • Cómo negar una consulta usando el predicado not/1.
  • Es el primer predicado de orden superior que vamos a usar. Repasamos ese concepto como la generalización de mandar lógica (una computación) por parámetro.
  • Vimos el concepto de inversibilidad como atributo a un predicado. Decimos que un predicado es inversible para un parámetros cuando acepta consultas existenciales y tiene la capacidad de ligar valores.
  • El not/1 tiene problemas de inversibilidad. Para solucionar es necesario tener un predicado generador de valores.
Luego comenzamos la guía de aritmética en Mumuki, sobre todo el ejercicio 7 que explica el uso del is/2.

La teoría se encuentra en los apuntes:
Queda como práctica en Mumuki:

También ya se encuentra publicado la primera parte del TP de lógico: Carrera universitaria. Tiene fecha de entrega el Viernes 12/5 por mail a su tutor.

Clase 1 - Lógico - Conceptos básicos

publicado a la‎(s)‎ 3 may. 2017 8:58 por Nahuel Palumbo   [ actualizado el 3 may. 2017 8:58 ]

¡Dejamos atrás el paradigma funcional para adentrarnos en una nueva aventura dentro del paradigma lógico!

La programación lógica es una programación declarativa en la cual a partir de las verdades declaradas nos permite inferir otras verdades que se desprenden de ella.
Después estuvimos aplicando los conceptos teóricos con la práctica de Mumuki usando el lenguaje SWI Prolog. El cual todos deberían tener instalado para la clase que viene.

Básicamente vimos
  • Módulo 1: Predicados. Individuos. Consultas. Universo Cerrado.
  • Módulo 2Variables. Consultas existenciales.  Reglas simples y compuestas.
Queda de práctica en Mumuki:
Además dejamos el código con el que estuvimos trabajando en clase.

Clase 7 - Funcional - Parcial + Bonus

publicado a la‎(s)‎ 18 abr. 2017 14:05 por Nahuel Palumbo   [ actualizado el 3 may. 2017 8:37 ]

Tomamos el parcial de Filósofoshttps://docs.google.com/document/d/18O4iy54v1XFCXB7QxbZnJzaFMezKO5bST86GiVny_wc/edit?usp=sharing
Suerte!

BONUS
Algo que nos pendiente en la cursada era ver cómo declarar nuestros propios Typeclasses. Como funcional ya termina no quería dejar de aunque sea pasarles un código de ejemplo.
Así que les dejo un archivo dónde se juega con Typeclasses y tiene comentarios sobre qué se está haciendo.

Clase 6 - Funcional - Evaluación diferida y Simulacro

publicado a la‎(s)‎ 16 abr. 2017 7:49 por Nahuel Palumbo   [ actualizado el 3 may. 2017 8:36 ]

Y llegamos a la última clase del paradigma funcional!

En esta clase vimos qué estrategia tiene Haskell para reducir una expresión: evaluación diferida (lazy evaluation). Esta capacidad de evaluando las expresiones a medida que lo necesita nos da la capacidad de trabajar con listas potencialmente infinitas siempre y cuando la operación converja a un valor.

Este tema se explica en el módulo 4. Y como práctica tienen la guía 15 en Mumuki.

Luego de terminar todos los temas nos pusimos a resolver el simulacro de Expertos en Maquinitas. Dejo el código que hicimos en clase que no llegamos a terminar.

Clase 5 - Funcional - TP y sus TADs

publicado a la‎(s)‎ 10 abr. 2017 10:13 por Nahuel Palumbo   [ actualizado el 10 abr. 2017 10:13 ]

en esta clase estuvimos comparando varias soluciones a la primera parte del TP, y analizándolo en función de sus TADs.

Aprendimos que un TAD (Tipo Abstracto de Datos) es un tipo de dato como los veníamos definiendo. Pero pusimos el foco en separar aquellas operaciones primitivas (que conocen cómo está implementado el TAD) de las que no (ya que se basan en las primitivas para obtener lo que necesiten). De esta forma tenemos un criterio para determinar qué funciones queremos que sean primitivas y cuáles no.

Luego estuvimos definiendo los tipos de todas las abstracciones del negocio. Varios de ellos terminaron siendo funciones, otros datas. Para el caso de las funciones, es importante pensar en cómo construirlas para que los tipos cierren. La construcción de nuestros TADs también es algo importante que, en el caso de los datas es simplemente invocando al constructor con los parámetros esperados, pero en el caso de las funciones tenemos que ordenar bien los parámetros para armar los tipos que queremos.

También recordamos qué significaba que un elemento sea Neutro o Absorbente en una operación. Vimos que la identificación de un elemento neutro puede servir para armar los otros elementos teniendo funciones que se encarguen de algún atributo del TAD.

Por último estuvimos flasheando con la definición de Monoide. Vimos que las hierbas representan un monoide bajo la operación de mazclar, teniendo la alcachofa 0 como neutro. Además, como es conmutativa, entra dentro del grupo abeliano.

Como nos ocupó toda la clase, quedó el último tema pendiente para la clase que viene! En la cual también vamos a estar trabajando sobre este enunciado que tienen que traer resuelto.

Clase 4 - Funcional - Typeclass y Currificación

publicado a la‎(s)‎ 28 mar. 2017 15:35 por Nahuel Palumbo   [ actualizado el 1 abr. 2017 10:15 ]

Comenzamos viendo los últimos temas teóricos que teníamos pendientes:
  • Explicamos qué es un Typeclass y cómo se utilizan para tratar polimórficamente distintos tipos de datos. Eso nos permite restringir el tipo de las funciones a distintos tipos.
  • Luego descubrimos que las funciones de Haskell están currificadas (en honor a su creador Haskell Curry). ¡Eso significa que todas las funciones son de un solo parámetro! WOOOW
Esto temas están explicados en:
En la segunda mitad de la clase hicimos este ejercicio entre todos. Quedó como tarea terminarlo. Se adjunta el código hecho en clase.

Sugerimos hacer las siguientes guías de Mumuki:
  • Guía 9: Práctica de Inferencia de Tipos
  • Guía 14: Es una práctica sobre el poder que tiene el paradigma
  • Guía 19: Es un histórico TP tomado en UTN
Ya está liberada la segunda parte del TP, pueden encontrarla en la sección de TPs.

1-10 of 13