module Exercise_11 where import Data.Time import Network import System.IO import System.Locale -- Für H11.1 --import qualified AssocList as AL {- Library -- nicht veraendern -} vocabs = ["i", "more", "more", "now", "want", "won", "wow"] getTime :: String -> IO String getTime str = do time <- getZonedTime let output = formatTime defaultTimeLocale str time return output {- G11.1 -} {- Zu Lösen in eigener Datei -} {- G11.2 -} {- Zu Lösen in eigener Datei -} {- G11.3 -} safeFixTypos :: [String] -> [String] -> [Either (String, [String]) String] safeFixTypos = undefined {- H11.1 -} {- Teilaufgabe 1 zu Lösen in eigener Datei -} {- assocListToMap2 -} {- map2ToAssocList -} {- H11.2 -} {- Folgende Funktionen können Sie zur Lösung verwenden (andere Funktionen sind natürlich auch gestattet): -- definiert in Network -- erzeugt einen Socket und wartet auf eingehende Verbindungen -- Muss nur ein einziges Mal beim Start des Servers aufgerufen werden. -- Bsp.: listenOn (PortNumber 80) listenOn :: PortID -> IO Socket -- definiert in Network -- erstellt ein I/O-Handle für eine Verbindung -- Kann nach einem Protokolllauf erneut aufgerufen werden. -- Für die Bearbeitung der Aufgabe ist nur das Handle notwendig, die anderen Rückgabewerte können ignoriert werden. accept :: Socket -> IO (Handle, HostName, PortNumber) -- definiert in System.IO -- schließt ein I/O-Handle -- muss unbedingt nach Beendigung eines Protokolllaufs oder bei vorzeitigem Abbruch aufgerufen werden hClose :: Handle -> IO () -- vordefiniert in dieser Datei -- nimmt einen Format-String und gibt Datum/Zeit als String zurück -- Syntax der Format-Strings: -- getTime :: String -> IO String -} server :: IO () server = withSocketsDo $ undefined