Exercițiul 1: Rotunjirea numerelor
Ocaml dispune de funcția standard truncate : float -> int (nume echivalent: int_of_float) care trunchiază partea zecimală a unui număr real.
a) Scrieți o funcție round : float -> int care rotunjește un real la cel mai apropiat întreg.
Dacă partea zecimală e 0.5, rotunjiți numărul în direcția opusă lui zero: round (-. 0.5) = -1, round 1.5 = 2
Operatorii pentru numere reale se scriu cu punct: +. -. *. /. (ca și constantele reale).
b) Scrieți o funcție care rotunjește un număr real la a doua zecimală,
folosind definiția de mai sus.
Exercițiul 2
Câte funcții de pe o mulțime cu 3 elemente pe o mulțime cu 3 elemente
nu sunt injective ? Argumentați cât mai simplu răspunsul.
Exercițiul 3: Compunerea funcțiilor
La curs, am definit
let comp f g x = f (g x) (* compunerea functiilor *) let appl2 f = comp f f (* f compusă cu ea însăși *)și am arătat, expandând definiția, că appl2 appl2 reprezintă compunerea de 4 ori:
appl2 f x = comp f f x = f (f x) appl2 appl2 f x = = appl2 (appl2 f) x = (appl2 f) ((appl2 f) x) = appl2 f (f (f x)) = f (f (f (f x)))Considerați următoarele definiții:
let appl3 f = comp f (appl2 f) let appl23c = comp appl2 appl3 let appl32c = comp appl3 appl2Explicați, expandând definițiile (pe hârtie) ce reprezintă fiecare din funcțiile definite.