list1 = [1,2,3,4,5] list2 :: [Int] list2 = [1,2] list3 = 0:list2 list4 = [1..10] list5 = [0,5..100] listLength [] = 0 listLength (h:t) = 1 + listLength t element _ [] = False element e (h:t) | h == e = True | otherwise = element e t append [] l = l append (h:t) l = h:append t l setUnion [] l = l setUnion (h:t) l | elem h l = setUnion t l | otherwise = h:setUnion t l setIntersect [] l = [] setIntersect (h:t) l | elem h l = h:setIntersect t l | otherwise = setIntersect t l flatten [] = [] flatten ([]:t) = flatten t flatten ((h:t1):t2) = h:flatten (t1:t2) doubleElems [] = [] doubleElems (h:t) = (2*h):doubleElems t listSumm [] = 0 listSumm (h:t) = h + listSumm t listMaximum [a] = a listMaximum (h:t) = max h (listMaximum t) myMap f [] = [] myMap f (h:t) = f h:myMap f t doubleElems1 = myMap (2*) myFoldr f s [] = s myFoldr f s (h:t) = f (myFoldr f s t) h listSumm1 = myFoldr (+) 0 mapC f l = [ f x | x <- l ] filterC f l = [ x | x <- l, f l ] decProductC a b = [ (x,y) | x <- a, y <- b ]