Paradygmaty programowania/Test 6: Programowanie funkcyjne — przegląd
Test 6
Czego z zasady nie ma w językach funkcyjnych?
parametrów z domyślnymi wartościami
pętli
wyrażeń warunkowych
wywołań rekurencyjnych
Która cecha jest typowa dla języków funkcyjnych, a rzadko występuje w językach imperatywnych i obiektowych?
kompilacja do kodu pośredniego
możliwość używania funkcji wyższego rzędu
silne typowanie
zaawansowane konstrukcje enkapsulacyjne
Listy służą w Lispie do zapisywania:
tylko danych
tylko kodu
i danych, i kodu
w Lispie nie ma list
Wywołanie ((LAMBDA (x) (* x x)) 2) w języku Scheme:
podstawi 2 pod wskaźnik do zmiennej x
wyświetli 4
zdefiniuje gwiazdkę jako operator o priorytecie 2
zdefiniuje LAMBDA jako funkcję dwuargumentową
Funkcja DISPLAY w języku Scheme:
nie ma żadnych efektów ubocznych
nie może być używana wewnątrz funkcji rekurencyjnej
wyświetla opis stanu interpretera
wyświetla swój argument na ekranie
Wartością wyrażenia (CAR ‘(A B C)) w języku Scheme jest:
A
(B C)
C
to wyrażenie jest niepoprawne
Wartością wyrażenia (CONS ‘(A B) ‘(C D)) w języku Scheme jest:
(A B C D)
(A B (C D))
((A B) C D)
to wyrażenie jest niepoprawne
Jak w języku Scheme należy zapisać wywołanie złożenia funkcji f z samą sobą na argumencie x, czyli (f o f)(x)?
(f (f x))
f(f(x))
((f f) x)
składanie funkcji nie jest w tym języku dozwolone
Które stwierdzenie nie jest prawdziwe w odniesieniu do języka ML?
lista może zawierać elementy różnych typów
można pisać funkcje polimorficzne
ML stosuje niejawne nadawanie typów
wyrażenia arytmetyczne zapisuje się w postaci infiksowej
Do łączenia list w Haskellu służy:
funkcja CONS
operator ++
operator &
nie ma operatora, po prostu zapisuje się dwie listy obok siebie