Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision |
teaching:cc4101:tareas:2015-1:tarea2 [2015/04/21 21:42] – [P3 - Inferencia de tipos (4.5pt)] flarenas | teaching:cc4101:tareas:2015-1:tarea2 [2015/05/11 17:08] (current) – [P2 - Variables fluidas (1.0pt)] flarenas |
---|
<code haskell> | <code haskell> |
> run "((fun (x) (+ x 1)) 3)" | > run "((fun (x) (+ x 1)) 3)" |
4 | NumV 4 |
</code> | </code> |
| |
(flet (x 10) | (flet (x 10) |
(f 1))))") | (f 1))))") |
11 | NumV 11 |
</code> | </code> |
| |
</code> | </code> |
| |
donde ''TVar Symbol'' es una variable de tipo con un ''Symbol'' único. Cada vez que se necesite definir una nueva variable de tipo, se debe ejecutar ''newTVar 0'' para adquirir una nueva variable de tipo con un ''Symbol'' único. Para la definición de ''newTVar'' debe considerar las siguientes librerias y definición de función: | donde ''TVar Symbol'' es una variable de tipo con un ''Symbol'' único. Cada vez que se necesite definir una nueva variable de tipo, se debe ejecutar ''newTVar 0'' para adquirir una nueva variable de tipo con un ''Symbol'' único. Para la definición de ''newTVar'' debe considerar las siguientes librerias y definiciones: |
| |
<code haskell> | <code haskell> |
Estudie el capitulo 30.2 del PLAI para una explicación detallada de como generar constraints. | Estudie el capitulo 30.2 del PLAI para una explicación detallada de como generar constraints. |
| |
Defina la función ''%%typeof :: Expr -> TEnv -> [Const] -> (Type, [Const])%%'' que dada una expresión ''Expr'', un ambiente de tipos ''TEnv'' y una lista de constraints ''[Const]'', retorna el tipo de la expresión con la lista de constraints que debe ser solucionable para que el programa sea válido en tipos. La función reporta errores solo en caso de identificadores libres; si la lista de constraints generada no es consistente, no retorna errores. | Defina la función ''%%typeof :: Expr -> TEnv -> (Type, [Const])%%'' que dada una expresión ''Expr'' y un ambiente de tipos ''TEnv'', retorna el tipo de la expresión con la lista de constraints que debe ser solucionable para que el programa sea válido en tipos. La función reporta errores solo en caso de identificadores libres; si la lista de constraints generada no es consistente, no retorna errores. |
| |
=== C. Unificación === | === C. Unificación === |