Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

1

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 ]

Haskell funkcije za konverziju karaktera u numericke kodove


1. chr :: Int -> Char daje karakter (iz ISO8 koda) cija je vrednost argument
funkcije
2. ord :: Char -> Int ceo broj koji odgovara rednom broj karaktera u ISO8
kodu

Haskell funkcije za rad sa listama


1. : dodavanje jednog elementa na pocetak liste
2. ++ spajanje dve liste
3. !!n - izdvajanje n-tog elementa liste.Infiksni operator lista!!n
4. concat spaja elemente liste u jednu listu. concat [[1,2,3],[4],[5,6]]
5. length duina liste
6. head prvi element liste
7. tail ostatak liste (sve sem prvog elementa)
8. last poslednji element liste
9. init sve sem poslednjeg elementa liste
10. replicate n pravi n kopija liste
11. take n daje prvih n elemenata sa pocetka liste
12. drop n izbacuje prvih n elemenata liste
13. splitAt n deli listu na dva dela na poziciji n
14. reverse obrce redosled elemenata u listi
15. zip sparuje elemente listi koje su argumenti
16. unzip Razbija listu parova na par listi
17. and konjunkcija elemenata liste koji su logicke vrednosti
18. or disjunkcija elemenata liste koji su logicke vrednosti
19. sum zbir elemenata liste
20. product proizvod elemenata liste
Primeri prethodnih operatora su dati u datoteci primer4.lhs
Niske
String je tipa [Char] lista karaktera. Na primer, list12 iz chapter5.hs.
F-je show i read se koriste za konverziju izmedju tipa String i ostalih vrednosti.
Npr. show (45), read "True"

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.

You might also like