parser recursif programming haskell
bonjour,
je débute en haskell et j'ai acheté le livre "programming in haskkel".
au chapitre sur les parsers il y a le code recursif sur les chaines dont je n'arrive pas a comprendre comment il se déroule.
Voici le code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
> char :: Char -> Parser Char
> char x = sat (== x)
>
> string :: String -> Parser String
> string [] = return []
> string (x:xs) = do char x
> string xs
> return (x:xs)
> sat :: (Char -> Bool) -> Parser Char
> sat p = do x <- item
> if p x then return x else failure |
la suite est ici http://www.cs.nott.ac.uk/~gmh/Parsing.lhs
comment le return (x:xs) est atteint?
j’essaie de décomposer en étape l'exemple suivant:
Code:
1 2
|
parse (string "to") "topi" |
mais je ne vois pas comment le résultat aboutit a [("to","pi")].
si quelqu'un peut dérouler l'exemple.
Merci.