Diferencia entre revisiones de «Final 19/11/2023 (Paradigmas)»

De Cuba-Wiki
(Página creada con «Prolog: Me pidió dar un programa que genere todos los árboles binarios (con constructores Nil y Bin izq der) de n nodos. Dijo que quizás era muy díficil entones me terminó pidiendo uno que genere las rotaciones de una lista. Sea L=[1, 2,3] => [[1,2,3],[2,3,1],[3,1,2]]. Lambda: Me preguntó si podía existir un término tipable M tal que M M esté bien tipado. Me pidió hacer una derivación de tipos para probar que no existía, acá hubiese estado bueno haber pr…»)
 
Sin resumen de edición
Línea 8: Línea 8:


Fue medio jodido el final con muchos momentos de no saber qué responder pero al final siento que fue copado con la nota.
Fue medio jodido el final con muchos momentos de no saber qué responder pero al final siento que fue copado con la nota.
----
Prolog: dado un alfabeto generar todas las posibles combinaciones de símbolos (de cualquier tamaño, podían contener repetidos)
Lógica: me dio la fórmula “para todo x existe y tal que x = y” y me preguntó si era válida (rta: no es válida porque depende de que la definición de igualdad haga que sea reflexiva) me dijo que escriba esa propiedad y que pruebe que la fórmula es válida (igualdad reflexiva -> la fórmula que me dio) usando resolución
Al usar resolución apareció un MGU y me pregunto sobre el algoritmo, que le diga la entrada, la salida y qué tiene que cumplir la salida. Me dio un conjunto de ecuaciones y me dijo que lo resuelva con el algoritmo: {x =•= f(y), y =•= x}
JavaScript: me dijo que tenes objetos que son iteradores: tienen un “hayProximo” que te dice si tenes un elemento más, y un “próximo” que te da el próximo elemento. Me pidió armar una función que tome dos iteradores y devuelva un iterador que vaya alternando entre los otros dos (si la función toma o y p queres un iterador que al pedirle próximo te de primero uno de o, si le volves a pedir próximo te da uno de p y así). Yo no llegue a armarla ni terminar la idea pero contandole lo que iba pensando alcanzó.
Objetos: me pregunto si los juicios de evaluación de cálculo sigma se podrían hacer small step y que si podía lo escriba (alcanzó con escribir solo la regla de SEL)
Cálculo lambda: me pregunto si teniendo solo Nat y Bool podía escribir programas que se traben (le dije que no y me preguntó por qué, quería que mencione el teorema de terminación). Me pregunto si agregando fix se podía y que de un ejemplo y lo mismo con referencias
Haskell: me pregunto la diferencia entre  recursion estructural y primitiva y que de los tipos de las funciones que lo hacen en Haskell (foldr y recr) y me preguntó si podíamos escribir una en función de la otra para ambas(recr usando foldr y foldr usando recr)

Revisión del 14:42 17 ene 2024

Prolog: Me pidió dar un programa que genere todos los árboles binarios (con constructores Nil y Bin izq der) de n nodos. Dijo que quizás era muy díficil entones me terminó pidiendo uno que genere las rotaciones de una lista. Sea L=[1, 2,3] => [[1,2,3],[2,3,1],[3,1,2]].

Lambda: Me preguntó si podía existir un término tipable M tal que M M esté bien tipado. Me pidió hacer una derivación de tipos para probar que no existía, acá hubiese estado bueno haber practicado ejercicios de tipo parcial. Me pidió explicar subtipado, lo expliqué conceptualmente dando la semántica y creo que hubiese querido una explicación más sintáctica. Me preguntó si el subtipado era reflexivo, antisimétrico, completo. Martelli Montanari: dar la especificación del algoritmo. El MGU es único? Definir qué es un conjunto de ecuaciones de unificación, qué es la unificación. Dar un ejemplo donde hay varias sustituciones que resuelven un problema de unificación.

Haskell: implementar zipWith :: (a -> b -> c) -> [a] -> [b] -> [c] que toma una función que combina un elemento de la primer lista con uno de la segunda lista (posición por posición no producto cartesiano) usando foldr, acá es el truco de que la función de combinación del foldr devuelva una función.

Objetos: Nada

Fue medio jodido el final con muchos momentos de no saber qué responder pero al final siento que fue copado con la nota.


Prolog: dado un alfabeto generar todas las posibles combinaciones de símbolos (de cualquier tamaño, podían contener repetidos)

Lógica: me dio la fórmula “para todo x existe y tal que x = y” y me preguntó si era válida (rta: no es válida porque depende de que la definición de igualdad haga que sea reflexiva) me dijo que escriba esa propiedad y que pruebe que la fórmula es válida (igualdad reflexiva -> la fórmula que me dio) usando resolución

Al usar resolución apareció un MGU y me pregunto sobre el algoritmo, que le diga la entrada, la salida y qué tiene que cumplir la salida. Me dio un conjunto de ecuaciones y me dijo que lo resuelva con el algoritmo: {x =•= f(y), y =•= x}

JavaScript: me dijo que tenes objetos que son iteradores: tienen un “hayProximo” que te dice si tenes un elemento más, y un “próximo” que te da el próximo elemento. Me pidió armar una función que tome dos iteradores y devuelva un iterador que vaya alternando entre los otros dos (si la función toma o y p queres un iterador que al pedirle próximo te de primero uno de o, si le volves a pedir próximo te da uno de p y así). Yo no llegue a armarla ni terminar la idea pero contandole lo que iba pensando alcanzó.

Objetos: me pregunto si los juicios de evaluación de cálculo sigma se podrían hacer small step y que si podía lo escriba (alcanzó con escribir solo la regla de SEL)

Cálculo lambda: me pregunto si teniendo solo Nat y Bool podía escribir programas que se traben (le dije que no y me preguntó por qué, quería que mencione el teorema de terminación). Me pregunto si agregando fix se podía y que de un ejemplo y lo mismo con referencias

Haskell: me pregunto la diferencia entre recursion estructural y primitiva y que de los tipos de las funciones que lo hacen en Haskell (foldr y recr) y me preguntó si podíamos escribir una en función de la otra para ambas(recr usando foldr y foldr usando recr)