Haskell :: Sprache |
Fremder (unbekannt) |
|
Mehrfachtests 29.11.2002 (05:03 Uhr) amo | ||||
Re: Aufgabe 2 - allDifferent 29.11.2002 (05:12 Uhr) amo | ||||
allDifferent2 01.12.2002 (19:39 Uhr) amo | ||||
allDifferent3 01.12.2002 (19:41 Uhr) amo | ||||
allDifferent -> allDifferent3 01.12.2002 (19:57 Uhr) amo | ||||
allDifferent -> allDifferent3 29.11.2002 (04:56 Uhr) amo | ||||
allDifferent4 01.12.2002 (20:08 Uhr) amo | ||||
allDifferent5 01.12.2002 (20:16 Uhr) amo | ||||
allDifferents 01.12.2002 (20:24 Uhr) amo | ||||
Aufgabe 3 - substring 27.11.2002 (22:59 Uhr) amo | ||||
> Das hab ich immer noch nicht hinbekommen. > Hat das schon wer? > Hier ist mal das, was ich bis jetzt habe: > > klammerInhalt :: [a] -> [a] > klammerInhalt xs = tail (init (xs)) > > isGeklammert :: Eq a => a -> a -> [a] -> Bool > isGeklammert o s xs = (head xs == o) && (last xs == s) > > isHtmlKlammer :: [[Char]] -> Bool > isHtmlKlammer = isGeklammert "" "" > isHeadKlammer :: [[Char]] -> Bool > isHeadKlammer = isGeklammert "" "" > isTitleKlammer :: [[Char]] -> Bool > isTitleKlammer = isGeklammert "" "" > isMetaKlammer :: [[Char]] -> Bool > isMetaKlammer = isGeklammert "" "" > isBodyKlammer :: [[Char]] -> Bool > isBodyKlammer = isGeklammert "" "" > > > listeBis :: Eq a => a -> [a] -> [a] > listeBis _ [] = [] > listeBis e (x:xs) > | e == x = [x] > | otherwise = x : listeBis e xs > > > anfKlammer :: (Eq a, Show a) => a -> a -> [a] -> [a] > anfKlammer _ _ [] = [] > anfKlammer o s (x:xs) > | notInList s xs = error("Uebungsblatt_06.anfKlammer: > Klammerungsfehler: " ++ show (xs) ++ " enthält die > schließende Klammer " ++ show s ++ " nicht.") > | o == x = x : listeBis s xs > | otherwise = error ("Uebungsblatt_06.anfKlammer: > Klammerungsfehler: " ++ show (x:xs) ++ " beginnt nicht > mit " ++ show o ++ ".") > > > trenneAnfKlammernAb :: String -> String -> Char -> > [String] -> [[String]] > trenneAnfKlammernAb _ _ _ [] = [[]] > trenneAnfKlammernAb o s a (x:xs) > | a == '1' = > if x == o && inList s xs then > let ak = anfKlammer o s (x:xs) in > ak : [drop (length ak - 1) xs] > else [x:xs] > | a == '*' = > if x == o && inList s xs then > let ak = anfKlammer o s (x:xs) in > ak : trenneAnfKlammernAb o s a (drop (length ak - 1) xs) > else [x:xs] > | a == '+' = > if x == o && inList s xs then > let ak = anfKlammer o s (x:xs) in > ak : trenneAnfKlammernAb o s '*' (drop (length ak - 1) > xs) > else error ("Uebungsblatt_06.trenneAnfKlammernAb: Aktion > " ++ show a ++ ": Klammerpaar " ++ show o ++ " - " ++ > show s ++ " nicht in " ++ show (x:xs) ++ " enthalten.") > | otherwise = error > ("Uebungsblatt_06.trenneAnfKlammernAb: Aktion " ++ show a > ++ " nicht definiert.") > > > > > hatBodyKlasse _ = True > hatHeadKlasse _ = True > > > checkHTML :: String -> Bool > checkHTML s = let w = words s > i = klammerInhalt w in > isHtmlKlammer w && hatHeadKlasse i && hatBodyKlasse i trenneAnfHeadAb = trenneAnfKlammernAb "<head>" "</head>" '1' trenneAnfTitleAb = trenneAnfKlammernAb "<title>" "</title>" '1' trenneAnfMetasAb = trenneAnfKlammernAb "<meta>" "</meta>" '*' klammerAnListAnf o s (x:xs) | o == x && inList s xs = True | otherwise = False headAnListAnf = klammerAnListAnf "<head>" "</head>" titleAnListAnf = klammerAnListAnf "<title>" "</title>" metaAnListAnf = klammerAnListAnf "<meta>" "</meta>" bodyAnListAnf = klammerAnListAnf "<body>" "</body>" isHeadBodyKlassen xs | headAnListAnf xs = isHead hl && notInList "<head>" rL && notInList "</head>" rL && isBody rL where headTrenn = trenneAnfHeadAb xs hL = head headTrenn rL = tail headTrenn isHead hL = isHeadKlammer hL && isTitleMetaKlassen hI where hI = klammerInhalt hL isTitleMetaKlassen hI | titleAnListAnf hI = isTitle titL && notInList "<title>" titRL && notInList "</title>" titRL && isMetaKlassen titRL where titTrenn = trenneAnfTitleAb hI titL = head titTrenn titRL = tail titTrenn isTitle titL = isTitleKlammer titL isMetaKlassen titRL | titRL == [] = True | metaAnListAnf titRL = isMetas mL && mRL == [] where mTr = trenneAnfMetasAb titRL mL = init mTr mRL = last mTr isMetas [] = True isMetas (m:ms) = isMetaKlammer m && isMetas ms | otherwise = False | otherwise = False isBody rL = isBodyKlammer rL | otherwise = False checkHTML :: String -> Bool checkHTML s = let w = words s i = klammerInhalt w in isHtmlKlammer w && isHeadBodyKlassen i isHeadBodyKlassen liefert beim Laden beim Parsen einen Syntax Error: ERROR "uebbl06.hs":144 - Syntax error in input (unexpected `|') Weiß jemand, was da falsch ist? | ||||
modul mit Funktion zum Testen von checkHTML 04.12.2002 (03:27 Uhr) amo | ||||
Re: modul mit Funktion zum Testen von checkHTML 04.12.2002 (03:36 Uhr) amo | ||||
checkHTML - Primitivversion 04.12.2002 (05:03 Uhr) amo | ||||
Re: checkHTML - Primitivversion 04.12.2002 (05:09 Uhr) amo | ||||
ganze Datei für Blatt 6 04.12.2002 (12:52 Uhr) amo | ||||
Zeige Beitrag 81 |
|
0 User im Forum. Kostenloses Forumhosting von plaudern.de. Dieses Forum im eigenen Design entführen. Impressum |