
Hello, Im trying to solve exercise 2 of this course : http://www.seas.upenn.edu/~cis194/spring13/hw/02-ADTs.pdf I have this till so far : -- | Main entry point to the application. {-# OPTIONS_GHC -Wall #-} module LogAnalysis where import Data.Char (isDigit, isLetter) import Log -- | checks if the String is of the format char int isValid :: String -> Bool isValid s = case words s of [a]:b:_ -> isLetter a && all isDigit b _ -> False -- | Parse the String to make the right logmessage parse_line :: String -> LogMessage parse_line s = case words s of ("I":time:text) -> LogMessage Info (read time) (unwords text) ("W":time:text) -> LogMessage Warning (read time) (unwords text) ("E":errorcode:time:text) -> LogMessage (Error (read errorcode)) (read time) (unwords text) _ -> Unknown "This is not in the right format" -- | here the actual function which uses isValid and parse to make the right log messages parseMessage :: String -> LogMessage parseMessage s = if isValid(s) then parse_line(s) else Unknown "This is not the right format" parse :: String -> [logMessage] parse s = parse_line s -- | The main entry point. main :: IO () main = do print $ show (parseMessage "I 4681 ehci 0xf43d000:15: regista14: [0xbffff 0xfed nosabled 00-02] Zonseres: brips byted nored)") print $ show (parseMessage "W 3654 e8] PGTT ASF! 00f00000003.2: 0x000 - 0000: 00009dbfffec00000: Pround/f1743colled") print $ show (parseMessage "E 47 1034 'What a pity it wouldn't stay!' sighed the Lory, as soon as it was quite") But I do not see how I can get the output of the parse_line into a List. Can anyone give me a tip ? Roelof
participants (1)
-
Roelof Wobben