Professional Documents
Culture Documents
Haskel Liste
Haskel Liste
Torke i liste
Torke
Torke su objekti koji sadre unapred definisan broj broj vrednosti unapred odredjenih tipova (koji mogu biti razliciti). Liste su objekti koji sadre proizvoljan broj
vrednosti koje sve moraju da budu istog tipa.
Torke se zapisuju u malim zagradama a liste u srednjim zagradama. Primer: Chapter5.hs.
Probati:
1. minAndMax 9 5
2. minAndMax (9+4) (3 - 5)
3. addPair (5,9)
4. fastFib 132 (porediti sa fib 30 iz chapter4.hs)
Funkcije preko torki se obicno definiu preko pattern matching-a.
Haskell ima selektor funkcije nad torkama:
fst(x,y)=x i snd(x,y)=y
Liste
Liste se u Haskell-u zadaju izmedju srednjih zagrada. Za svaki tip t postoji Haskellov tip [t] koji je lista sa elementima tipa t. Npr za tip Int jedna od mogucih lista je
[1,2,3].
List comprehension - (eng. comprehenision - shvatanje, razumevanje).
Liste ce biti zadate preko opisa, slicno kao u matematici. Simbol <- se koristi
da oznaci matematicki simbol . U ovakvom nacinu definisanja liste n <- ex se
naziva bfseries generator jer generie listu.
comp3 = [ 2*n | n <- ex , isEven n , n>3 ]
Ova definicija moe da se iskae kao Uzmi sve 2*n gde n pripada ex, n je parno i
vece od 3.
Umesto jedne promenljive levo od <- moe se koristiti i paterna ako u primeru
addPairs pairList = [ m+n | (m,n) <- pairList ]
Zadaci
Definisati funkciju
doubleAll :: [Int] -> [Int]
koja duplira sve elemente celobrojne liste.
Napisati funkciju Capitalize::String->String koja prevodi sva mala slova u
velika
Napisati funkciju CapitalizeLetters::String->String koja prevodi sva mala
slova u velika i pri tome izbacuje karaktere koji nisu slova.
Definisati funkciju divisors::Int -> [Int] koja vraca listu delilaca pozitivnog
celog broja i praznu listu za ostale ulaze.
Definisati funkciju isPrime::Int->Bool koja proverava da li je pozitivan ceo
broj prost.
Definisati funkciju upareno :: Int ->[Int]->[Int] koja ostavlja sva pojavljivanja broja n (prvog argumenta) u listi (koja je drugi argument).
Koristeci funkciju upareno definisati funkciju elem::Int->[Int]->Bool koja
vrca True ako je prvi argument element liste koja je drugi argument funkcije
i False u suprotnom.
Napisati funkciju flatten x ciji je rezultat lista koja sadrzi sve elemente
podlisti argument liste.
Napisati funkciju reverse x ciji je rezultat lista koja sadrzi sve elemente argument liste u obrnutom redosledu.
Napisati, bez koricenja prethodno prikazane funkcije reverse, funkciju
obrni koja obrce redosled elemenata liste
Napisati funkciju pascal n koja formira listu koja sadri Paskalov trougao
dubine n+1.
Napisati funkciju singleton x koja formira listu od elemenata liste x koji se
pojavljuju tacno jednom.