Comment résoudre ce problème en une simple HXT fonction?
-
14-12-2019 - |
Question
J'ai commencé le tutoriel sympathique tutoriel sur la HXT pour analyser le fichier XML avec haskell.
Dans la première page de ce tutoriel, nous essayons de récupérer invité à partir d'un fichier xml.Et il y a la fonction suivante pour que.
data Guest = Guest {firstName, lastName :: String}
deriving (Show, Eq)
getGuest = deep (isElem >>> hasName "guest") >>>
proc x -> do
fname <- getText <<< getChildren <<< deep (hasName "fname") -< x
lname <- getText <<< getChildren <<< deep (hasName "lname") -< x
returnA -< Guest {firstName = fname, lastName = lname}
mais quand j'ai essayé de charger le fichier dans l'interpréteur ghci
.J'obtiens toujours cette erreur :
Prelude> :l hxt_tuto.hs
hxt_tuto.hs:15:37: parse error on input `->'
Failed, modules loaded: none.
soulignant le fait que l'opérateur -> dans l'expression proc x -> do
a une erreur d'analyse,
J'ai essayer beaucoup de modification sans aide.comme l'écrit tout cela dans une seule ligne
getGuest2 = deep (isElem >>> hasName "guest") >>> proc x -> do { fname <- getText <<< getChildren <<< deep (hasName "fname") -< x; lname <- getText <<< getChildren <<< deep (hasName "lname") -< x; returnA -< Guest {firstName = fname, lastName = lname }}
Quelqu'un peut-il m'Aider à comprendre ce que j'ai manqué ?
merci pour toute réponse!
La solution
Avez-vous pensé à mettre
{-# LANGUAGE Arrows, NoMonomorphismRestriction #-}
import Text.XML.HXT.Core
en haut de votre fichier?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow