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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.