Ficha OCaml 4: tipagem, avaliação, erros, Parte 2

 

Ficha OCaml 4: tipagem, avaliação, erros, Parte 2Ex. Qual o tipo?Ex. Digressões sobre f.Ex. Terminação e tipagem.Ex. Terminação e tipagem, outra vez.Ex. Verdade ou Falso?Ex. Qual valor?Ex. Tipagem de expressões.Ex. Tipos ou erros.


 

Ex. Qual o tipo?

Para cada uma das expressões seguintes, indicar se são corretamente tipificadas. No caso positivo, dar o referido tipo.

  1. let f1 x = !x
  2. let f2 g x y = if g x then y x else g
  3. let f3 h = let x = ref true in if h x then x:= false; !x

 

Ex. Digressões sobre f.

Considere o código seguinte :

 

  1. A função termina sempre?

    • Verdade

    • Falso

  2. A função está devidamente tipificada?

    • int -> int

    • int -> int -> int

    • int

    • ERROR


 

Ex. Terminação e tipagem.

Considere o código seguinte :

  1. A função termina sempre?

    • Verdade

    • Falso

  2. A função está devidamente tipificada com qual dos tipos ?

    • int -> int -> int

    • int -> int -> unit

    • unit -> unit -> unit

    • ERROR


 

 

Ex. Terminação e tipagem, outra vez.

Considere o código seguinte :

  1. A função termina sempre?

    • Verdade

    • Falso

  2. A função está devidamente tipificada com qual dos tipos ?

    • int

    • int -> int

    • ERROR


 

Ex. Verdade ou Falso?
  1. É possível declarar uma função f de tipo (int * int * int) -> bool de pelo menos duas formas diferentes?

    • Verdade

    • Falso

  2. As funções seguintes f1 e f2 são equivalentes:


 

Ex. Qual valor?

Considere a função f

Que valor devolve as expressão f 10 9 0 ?


 

Ex. Tipagem de expressões.

Dê o tipo das expressões seguintes:


 

Ex. Tipos ou erros.

Para cada uma das alíneas seguintes, dar o tipo da expressão e se não houver tipo por causa de um erro, explique a razão do erro :