Estoy tratando de aprender Flechas en Haskell, así que estoy escribiendo una aplicación simple con la biblioteca basada en flecha HXT para XML. Los ejemplos en los wikis HXT y los tutoriales renuncian a las firmas de tipo de función. Sin embargo, soy bastante aficionado a los tipos y estoy tratando de encontrar la manera de usarlos. Aquí es donde he encontrado un obstáculo. Teniendo en cuenta estas funciones:Flechas/HXT y firmas de tipo
readXml str = runX (readString [withValidate no] str)
atTag tag = deep (isElem >>> hasName tag)
Calculo que deben asignarse las siguientes firmas:
readXml ∷ String → IO [XmlTree]
atTag ∷ ArrowXml a ⇒ String → a XmlTree XmlTree
Estoy tratando de conectar estos juntos utilizando la sintaxis de la flecha como tal:
parseItem = proc str -> do
desc <- text <<< atTag "description" <<< arr readXml -< str
...
Sin embargo, si mis firmas de mi tipo son correctas (GHC no se ha quejado), necesitaría una forma de combinar la sintaxis de la mónada y la sintaxis de la flecha para obtener el XmlTree
y devolverlo al IO
.
No estoy seguro de cómo proceder. Alguien tiene alguna idea?
Estoy confundido. En el escenario 1, readXml no es en realidad una flecha, sino una función que devuelve una flecha. ¿Cómo se puede usar esto con la sintaxis de flecha como si fuera una? – providence
Olvidé eliminar el '- <' cuando copié el código; debería ser más claro ahora. – dflemstr