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
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