2016-06-25 32 views
7

Ho letto circa arrows ultimamente, un concetto inventato più di 10 anni fa. Permette di ottenere più informazioni statiche sui calcoli rispetto alle monadi, pur avendo il potere dei calcoli a seconda dei precedenti.Buoni esempi all'avanguardia di frecce in azione?

Tuttavia non sono riuscito a trovarli usati nelle librerie più recenti e all'avanguardia. Ad esempio, attoparsec non ha nemmeno un'istanza Arrow, anche se le frecce sono state progettate per accelerare l'analisi.

Esistono alcuni esempi di frecce utilizzate nelle librerie o negli eseguibili attualmente sviluppati, che offrono prestazioni o altri vantaggi?

(capisco che questo è una specie di una domanda soft - il mio obiettivo è quello di ottenere una migliore comprensione del concetto e dei suoi vantaggi.)

+0

Ho scoperto che [_Netwire_] (https://wiki.haskell.org/Netwire) è un bell'esempio. In particolare ['Wire'] (https://hackage.haskell.org/package/netwire-5.0.1/docs/Control-Wire-Core.html#t:Wire) implementa fino a' ArrowChoice' ma non 'Monad '. –

risposta

1

Checkout this tutorial per opaleye. Le frecce sono ampiamente utilizzate in tutto (oltre ai profunctors). La libreria offre un modo per scrivere query Postgres composable, typesafe. Non ho molta esperienza nell'usarla, ma sembra che sia una libreria ben progettata, ed è presumibilmente una buona scelta se stai usando Postgres nel back-end. Ben Kolera ha una buona introduzione video alla libreria here.