Haskell lire les lignes du fichier
Je veux lire un fichier entier en une chaîne de caractères, puis utiliser la fonction lines
pour obtenir les lignes de la chaîne. Je suis en train de le faire avec ces lignes de code:
main = do
args <- getArgs
content <- readFile (args !! 0)
linesOfFiles <- lines content
Mais j'obtiens l'erreur suivante par la compilation d'annonce, il échoue:
Couldn't match expected type `IO t0' with actual type `[String]'
In the return type of a call of `lines'
In a stmt of a 'do' block: linesOfFiles <- lines content
J'ai pensé en se liant le résultat de readFile
de contenu, il sera un String
Type de données, pourquoi n'est-il pas?
source d'informationauteur LeonS
Vous devez vous connecter pour publier un commentaire.
C'est un
String
en effet, ce n'est pas ce que le compilateur se plaint. Regardons le code:Maintenant
content
est, comme vous le souhaitez, une plaineString
. Et puislines content
est un[String]
. Mais vous êtes à l'aide de la monadique de liaison dans la ligne suivantedans un
IO ()
faire bloc. Ainsi, le compilateur s'attend à une expression de typeIO something
sur le côté droit de la<-
mais il trouve un[String]
.Depuis le calcul
lines content
n'implique pas de toutIO
vous devez lier son résultat avec unelet
de liaison à la place de la monadique de liaison,est la ligne dont vous avez besoin là.