Vaje: izpeljava tipov
Услови за завршување
Za vsakega od naslednjih izrazov izpeljite njegov glavni tip, ali ugotovite, da ga nima. Nato preverite odgovor še v OCamlu.
Naloga
Izpeljite glavni tip izraza
fun x -> fun y -> x, y, y
Naloga
Izpeljite glavni tip izraza
fun f -> fun g -> f (g 42)
Naloga
Izpeljite glavni tip izraza
if 3 < 5 then fun x -> x else fun y -> y, y
Naloga
Izpeljite glavni tip rekurzivne funkcije
let rec f x = if x = 0 then 1 else x * f (x - 1)
Naloga
Izpeljite glavni tip funkcije map:
let rec map f l =
match l with
| [] -> []
| x :: xs -> f x :: map f xs
Navodilo: uporabite pravilo za rekurzivne funkcije, ter pravila za sezname in match:
prazen seznam
[]ima tipα list, kjer jeαnov parametersestavljen seznam
e₁ :: e₂:- izpeljemo tip
τ₁izrazae₁in dobimo enačbeE₁ - izpeljemo tip
τ₂izrazae₂in dobimo enačbeE₂
Tip
e₁ :: e₂jeτ₁ list, z enačbamiE₁,E₂inτ₂ = τ₁ list.- izpeljemo tip
izraz
match e₁ with [] -> e₂ | x :: xs -> e₃:- izpeljemo tip
τ₁izrazae₁in dobimo enačbeE₁ - izpeljemo tip
τ₂izrazae₂in dobimo enačbeE₂ - uvedemo nov parameter
α, zabeležimox : αinxs : α list, izpeljemo tipτ₃izrazae₃in dobimo enačbeE₃
Tip
match e₁ with [] -> e₂ | x :: xs -> e₃jeτ₂z enačbamiE₁,E₂,E₃,τ₁ = α listinτ₂ = τ₃.- izpeljemo tip
Последна промена: понеделник, 28 април 2025, 19:01