Domanda

Sto cercando di scrivere una freccia che genererà gli elementi numerati da una parse XML con HXT. Sembra che dovrebbe essere fatto con una freccia di stato, come lo Stato Monade, ma tutti gli esempi che posso trovare nella confezione HXT e le modalità per accedere allo stato ( XmlState ) utilizzare l'IOStateArrow e mi sarebbe molto meglio tenerlo puro di semplificare il processo di test, con lo StateArrow. Esistono tali varianti? Se no, come potrei aggiungere stato a un parse HXT senza dover ricorrere a correre la freccia nel IO?

È stato utile?

Soluzione

È possibile utilizzare ArrowState istanza di SLA per questo. Un esempio:. Lasciate che dobbiamo assumere per concatenare tutti gli elementi di testo di secondo livello

Prelude Text.XML.HXT.Core> fst $ runSLA (xread >>> getChildren >>> getChildren >>> isText >>> getText >>> changeState (++)) "" "<xml><item>a</item><item>b</item></xml>" 
"ab"

Si noti che non è possibile utilizzare IO all'interno del SLA dal momento che in caso non ha ArrowIO.

La speranza, è quello che ti serve.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top