Final 10/06/2010 (Paradigmas)

De Cuba-Wiki
Saltar a: navegación, buscar
Back.png Volver a la página de la materia

Ejercicio 1[editar]

Dar un ejemplo de una función NO currificada y currificada. Decir su tipo. Y para que sirve esto.

Ejercicio 2[editar]

Dar el tipo de map y ver si tipa map map y si tipa mostrar su tipo (con árbol de inferencia o con el algoritmo W).


Ejercicio 3[editar]

Sea:

  tipos       = ... | MSet_(sigma)
  expresiones = ... | Nil_(sigma) | Cons_(sigma) M N O | Case_(sigma) M of { Nil -> N; Cons x y z -> O)}
  valores     = ... | Nil_(sigma) | Cons_(sigma) U V W


Donde MSet_(sigma) es un multiconjunto (bag) de elementos del tipo sigma. Y un ejemplo de estos multiconjuntos podría ser:

  Const_(Bool) True 2 ( Cons_(Bool) False 1 ( Cons_(Bool) True 3 ( Nil_(sigma) ) ) )

Es decir, en un Cons_(sigma) V1 V2 V3: V1 es un elemento del tipo sigma, V2 del tipo Nat (V2 = la cantidad de apariciones del elemento V1) y V3 del tipo Cons_(sigma) (i.e. el resto del multiconjunto).

a) Dar las reglas de tipado.

b) Dar las reglas de semántica.

c) Dar las reglas de inferencia de tipo para Case_(sigma).

Ejercicio 4[editar]

Lleve a forma clausal la siguiente fórmula:

  ParaTodo x ParaTodo y ( x>y => ( Existe z (x<z  AND z<y) )