Sari la conținut
EXAMS.RO

Paradigme de programare · 2006 · Sesiune

Profesor
Cristian Giumale
Anul examenului
2006
Sesiune
Sesiune
Serie
CA
Adăugat
12 septembrie 2011 de Bogdan Ivanov
Subiecte PF (20.06.2006)

1. c= \x.\f.(f ((x x) f)). sa se arate ca functionala Q = (c c) este un combinator de punct fix

2. Sa se rescrie in Haskell, in forma terminal recursiva, functia times, folosind programarea cu transfer de continuari. Functia obtinuta are apelul (times' x y)

times 0 _ = 0

times (x+1) y = y + (times x y)

3. Dr. Who doreste sa implementeze in Scheme predicatul forced? :Promisiune -> Boolean pentru a testa daca o promisiune a fost fortata. In acest scop, operatorii delayu si force ar trebui modificati. Din comoditate, Dr. Who accepta sa foloseasca doi noi operatori, anume delay~ si force~ scrisi in cateva linii pe baza lui delay si force. Faceti ce isi propune Dr.Who : implementati, cu efot, minim, delay~ si force~ si forced?.

4.Ce valoare reintoarce aplicatia (fact 5) din programul de mai jos?

(define x! (lambda (x) (if (= x 1) 1 (* x (x! (-n 1))))))

(define fact x!)

(define x! (lambda (x) (+1 x)))

(fact 5)

5. Fie functia Haskell

g x = root where root = x:root

a) sa se deseneze lista g 1

b) ce rezultat reintoarce testul g 1 == g 1 ?

6. Care este valoarea variabilei x dupa evaluarea expresiilor Scheme de mai jos

(define y 0)

(define x (+1 (call/cc (lambda (c) (set! y c) 2)) 3))

(y (y x))

7. Sa se rescrie functia fp_map in Haskell, folosind exclisiv 'list comprehension'

(define fp_map

(lambda (f p a b)

(map f (filter (lambda (x) (p x b)) a))))

8. Sa se scrie signatura completa (inclusiv contextul) a functiei Haskell

f x y (x' z) = if x == [] then y else if (head x) > x' then z else x

9. Ce este o corutina? (nu definitia din curs )

10. Un program Scheme utilizeaza liste unidirectionale imbricate , ex (1 (2 (3) 5) 6). sa prsupunem ca, in haskell se alege urmatoarea reprezentarea a listelor imbricate cu elemente de acelasi tip:

data GList a =Atom a| List [GList a]

a) sa se reprezinte, folosind GList a, lista scheme data ca exeplu

b) ceva cu clasa show (mult de scris :( )

c) ceva legat de b