spoj l1 = [y | x<-l1, y<-x] delioci n = [x | x<-[1..n], n `mod` x == 0] prosti n = [x | x<-[1..n], [y | y<-[1..x], x `mod` y == 0]==[1,x]] prviprosti n = take n [x | x<-[1..], [y | y<-[1..x], x `mod` y == 0]==[1,x]] pitagorine n = [(x,y,z) | x<-[1..n], y<-[1..n], z<-[1..n], x^2+y^2==z^2] savrseni n = [x | x<-[1..n], sum [y | y<-[1..x-1], x `mod` y ==0] == x] qsort [] = [] qsort (h:t) = qsort [x|x<-t,x=h] --Main> (\x -> x+1) 4 --5 --Main> (\x y-> x+y-1) 4 4 --7 --Main> mapiranje :: [a]->(a->b)->[b] mapiranje [] f = [] mapiranje (h:t) f = (f h):(mapiranje t f) --ugradjena funkcija map --Main> mapiranje [1,2,4,5] (\x -> x+1) --[2,3,5,6] --Main> mapiranje [[1,2],[4,5,4]] (\x -> sum x) --[3,13] filtriraj :: [a]->(a->Bool)->[a] filtriraj [] _ = [] filtriraj (h:t) f = if f h then h:(filtriraj t f) else filtriraj t f --ugradjena funkcija filter --Main> filtriraj [1,2,3,4,6,7,8] (\x -> x `mod` 2 == 0) --[2,4,6,8] sazmi :: [a]->(a->b->b)->b->b sazmi [] _ e = e sazmi (h:t) f e = f h (sazmi t f e) --ugradjene funkcije foldl i foldr --Main> sazmi [1,2,3,4] (\x y-> x+y) 0 --10 --Main> sazmi [[1,2,4],[5,6],[]] (++) [] --[1,2,4,5,6] --obrtanje liste --Main> foldr (\x y-> y ++ [x]) [] [1,2,3,4,5] --[5,4,3,2,1] --Main> foldr (\x y-> if x filter (\x -> [y | y<-[1..x],x `mod` y==0]/=[1,x]) [1..100] --[1,4,6,8,9,10,12,14,15,16,18,20,21,22,24,25,26,27,28,30,32,33,34,35--,36,38,39,40,42,44,45,46,48,49,50,51,52,54,55,56,57,58,60,62,63,64 --,65,66,68,69,70,72,74,75,76,77,78,80,81,82,84,85,86,87,88,90,91,92,--93,94,95,96,98,99,100] --z2 --Main> map (\x-> x++[(foldr (+) 0 x)]) [[1,2,3],[4,5],[],[6]] --[[1,2,3,6],[4,5,9],[0],[6,6]] --z3 -- vec uradjen --z4 --Main> foldr (\x y-> if y==[] then [x] else if x==(head y) then y --else x:y) [] [1,1,2,3,3,3,2,2,5] --[1,2,3,2,5] --z5 --Main> foldr (\x y -> ((fst x):(fst y),(snd x):(snd y))) ([],[]) [(1,2),(3,4),(5,6)] --([1,3,5],[2,4,6])