Paradygmaty programowania/Test 10: Programowanie funkcyjne w Haskellu I: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
==Test 10== | |||
<quiz type="exclusive"> | <quiz type="exclusive"> | ||
Zapisany w Haskellu nagłówek f \:\: (Integer -> Integer) -> (Integer -> Integer) deklaruje f jako funkcję, której parametrami i wynikiem są: | Zapisany w Haskellu nagłówek f \:\: (Integer -> Integer) -> (Integer -> Integer) deklaruje f jako funkcję, której parametrami i wynikiem są: |
Wersja z 16:56, 13 wrz 2006
Test 10
Zapisany w Haskellu nagłówek f \:\: (Integer -> Integer) -> (Integer -> Integer) deklaruje f jako funkcję, której parametrami i wynikiem są:
parametr\: funkcja biorąca liczbę całkowitą i zwracająca liczbę całkowitą, wynik\: takaż funkcja
parametry\: dwie liczby całkowite, wynik\: dwie liczby całkowite
parametr\: liczba całkowita, wynik\: liczba całkowita i funkcja biorąca liczbę całkowitą i zwracająca liczbę całkowitą
taka deklaracja nie jest w Haskellu poprawna
Definicje funkcji, w których trzeba rozpatrzyć osobne przypadki, można w Haskellu zapisać na kilka sposobów. Który z wymienionych sposobów nie jest poprawny?
dopasowywanie do wzorca
dozory
if-then-else
switch
Haskellowy typ Integer obejmuje liczby całkowite mieszczące się:
w dwóch bajtach
w czterech bajtach
to zależy od implementacji
bez ograniczeń (Haskell przydziela dostępną pamięć w miarę potrzeby)
W nagłówku kw :: Num a \=> a -> a określamy typ parametru i wyniku funkcji kw jako:
Num
dowolny typ z klasy Num
dowolny typ, bez ograniczeń
ta deklaracja jest niepoprawna
Jeśli funkcja ma typ (Float, Float) -> Float, to po rozwinięciu będzie miała typ:
Float -> (Float -> Float)
Float -> (Float, Float)
(Float -> Float) -> Float
rozwinięcie nie jest w tym przypadku możliwe
Zapis Float -> Float -> Float jest interpretowany jako:
Float -> (Float -> Float)
Float -> (Float, Float)
(Float -> Float) -> Float
nawiasy są tu konieczne, nie można ich pominąć
Typ [(Integer,Integer)] oznacza:
listę liczb całkowitych o długości ograniczonej do dwóch elementów
listę par liczb całkowitych
parę list liczb całkowitych
taki typ nie jest poprawny
Które użycie operatora dodawania jest w Haskellu niepoprawne?
1 + 2
(+) 1 2
((+) 1) 2
(+)(1, 2)
Jeśli funkcja f jest typu Integer -> Integer -> Integer, to `f` (nazwa funkcji ujęta w odwrócone apostrofy) jest:
funkcją typu (Integer, Integer) -> Integer
funkcją typu (Integer -> Integer) -> Integer
operatorem, którego można używać infiksowo, np. 1 `f` 2
zapis taki jest niepoprawny
Zapis (3 +) oznacza:
funkcję typu Integer -> Integer
parę złożoną z liczby 3 i znaku plus
trzyargumentową wersję operatora dodawania
zapis taki jest niepoprawny