Vaje: izpeljava tipov
                                    Zahteve zaključka
                                    
                        
                        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 parameter
- sestavljen seznam - e₁ :: e₂:- izpeljemo tip τ₁izrazae₁in dobimo enačbeE₁
- izpeljemo tip τ₂izrazae₂in dobimo enačbeE₂
 - Tip - e₁ :: e₂je- τ₁ list, z enačbami- E₁,- 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čbami- E₁,- E₂,- E₃,- τ₁ = α listin- τ₂ = τ₃.
- izpeljemo tip 
Zadnja sprememba: ponedeljek, 28. april 2025, 19.01
