[Haskell-beginners] how to do this ?

Roelof Wobben r.wobben at home.nl
Tue Feb 24 09:44:39 UTC 2015


Yes, that is one of the books I have to read.
For this exercises chapter 2 and 3 .

Roelof


Francesco Ariis schreef op 24-2-2015 om 10:37:
> off list: try to give a more meaningful title to your posts
> (i.e. "cis194 help exercise 2" instead of "how to do this").
> It might lead to more answers!
>
> Also, have you tried "Learn you a haskell for great good"?
>
>
> On Tue, Feb 24, 2015 at 10:28:28AM +0100, Roelof Wobben wrote:
>> 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
>>
>>
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners



More information about the Beginners mailing list