ont donc ceHaskell lignes de séparation dans la liste, y compris les lignes vides
type DocName = FilePath
type Line = (Int,String)
type Document = [Line]
splitLines :: String -> Document
splitLines [] = []
splitLines str = zip [0..(length listStr)] listStr
where
listStr = [getLine] ++ map snd (splitLines getRest)
getLine = (takeWhile (/='\n') str)
getRest = (dropWhile (=='\n') (dropWhile (/='\n') str))
fonctionne ok sauf que je suppose que j'ai besoin des lignes vides aussi.
splitLines "test\nthis\nstring\n" should be
[(0,"test"),(1,"this"),(2,"string"),(3,"")]
Je ne sais pas exactement comment je pourrais le faire. Des idées? Ai-je besoin de le réécrire avec autre chose?
Devrais-je utiliser une fonction d'ordre élevé comme foldr? Merci.
Je l'ai trouvé enfin merci.
splitLines :: String -> Document
splitLines "" = [(0,"")]
splitLines str = zip [0..(length listStr)] listStr
where
listStr = [getLine] ++ map snd (splitLines getRest)
getLine = takeWhile (/='\n') str
getRest = tail (dropWhile (/='\n') str)
Pourquoi vos tuples doivent dupliquer l'index? Est-ce que 'lines' n'est pas ce que vous voulez? – Daenyth
ne peut pas utiliser des lignes. devons créer notre propre fonction de lignes. Comment pourrais-je utiliser l'index? Je ne savais pas comment faire ça. – Matt