Sto cercando di imparare le frecce in Haskell, quindi sto scrivendo una semplice applicazione con la libreria HXT basata su frecce per XML. Gli esempi nei wiki e nelle esercitazioni HXT forgo le firme dei tipi di funzione. Tuttavia, mi piacciono molto i tipi e sto cercando di capire come usarli. Questo è dove ho incontrato un ostacolo. Alla luce di queste funzioni:Frecce/HXT e tipi di firme
readXml str = runX (readString [withValidate no] str)
atTag tag = deep (isElem >>> hasName tag)
Immagino che dovrebbero essere assegnate le seguenti firme:
readXml ∷ String → IO [XmlTree]
atTag ∷ ArrowXml a ⇒ String → a XmlTree XmlTree
Sto cercando di agganciare questi sintassi freccia insieme usando come tale:
parseItem = proc str -> do
desc <- text <<< atTag "description" <<< arr readXml -< str
...
Tuttavia, se le mie mie firme di tipo sono corrette (GHC non si è lamentato), avrei bisogno di un modo in cui combinare la sintassi di monad e la sintassi della freccia per ottenere il XmlTree
e restituirlo a IO
.
Non so come procedere. Qualcuno ha qualche intuizione?
Sono confuso. Nello scenario 1, readXml non è in realtà una freccia, piuttosto una funzione che restituisce una freccia. Come può essere usato con la sintassi della freccia come se fosse uno? – providence
Ho dimenticato di rimuovere '- <' quando ho copiato il codice; dovrebbe essere più chiaro ora. – dflemstr