-- $Id: Aufgabe9.hs,v 1.2 2004/01/14 06:33:03 fp010 Exp $ module Aufgabe9(listFilt,fOne,fTwo,fThree, extractSet, union,inters,diff, isSet,isEqual,isElem) where import Prelude import qualified List import qualified Char ---------------------------------------------------------------------------- listFilt :: (a->Bool) -> [[a]] -> [[a]] listFilt = map . filter fOne :: String -> Bool fOne (c:_) | Char.isUpper c = False fOne s = even $ length s fTwo :: Integer -> Bool fTwo n = isFib n 0 1 where isFib n f f' | n > f = isFib n f' (f+f') | otherwise = n == f {- caching variant -- might run into GC-issues fTwo = isFib allFibs where allFibs = 0 : 1 : [ x+y | (x,y) <- (zip allFibs (tail allFibs)) ] isFib (f:fs) n | n < f = False | n ==f = True | n > f = isFib fs n -} fThree :: String -> Bool fThree = isPal where isPal s = reverse s == s ---------------------------------------------------------------------------- extractSet :: Eq a => [a] -> [a] extractSet = List.nub -------------------------------- union,diff,inters :: Eq a => [a] -> [a] -> [a] union = List.union diff = (List.\\) inters = List.intersect -------------------------------- isSet :: Eq a => [a] -> Bool isSet s = s == extractSet s isEqual :: Eq a => [a] -> [a] -> Bool isEqual a b = null (a `diff` b) && null (b `diff` a) isElem :: Eq a => a -> [a] -> Bool isElem = elem ---------------------------------------------------------------------------- -- $Log: Aufgabe9.hs,v $ -- Revision 1.2 2004/01/14 06:33:03 fp010 -- fixed [100..(-100)]; added some testcases with [String]; -- -- Revision 1.1 2004/01/07 12:59:19 fp010 -- first draft --