[Haskell-cafe] Extensible states
Marcos Viera
marcosomarviera at gmail.com
Wed May 6 16:35:29 UTC 2015
In the following paper we introduced an implementation that performs lookup
in O(log n) and insertion in O(1) by moving some of the work to compile
time.
@INPROCEEDINGS { MVP13,
AUTHOR = { Martinez, Bruno and Viera, Marcos and Pardo, Alberto },
TITLE = { Just Do It While Compiling!: Fast Extensible Records in
Haskell },
BOOKTITLE = { Proceedings of the ACM SIGPLAN 2013 Workshop on Partial
Evaluation and Program Manipulation },
SERIES = { PEPM '13 },
YEAR = { 2013 },
ISBN = { 978-1-4503-1842-6 },
LOCATION = { Rome, Italy },
PAGES = { 77--86 },
NUMPAGES = { 10 },
DOI = { 10.1145/2426890.2426908 },
ACMID = { 2426908 },
PUBLISHER = { ACM },
ADDRESS = { New York, NY, USA },
KEYWORDS = { balanced trees, extensible records, haskell, hlist, staged
computation, type-level programming },
PDF = { http://www.fing.edu.uy/~mviera/papers/pepm13.pdf },
}
Best,
marcos
On Tue, May 5, 2015 at 6:50 AM, Roman Cheplyaka <roma at ro-che.info> wrote:
> On 05/05/15 12:40, Alberto G. Corona wrote:
> > Hi,
> >
> > Anyone used some of the extensible record packages to create a kind of
> > extensible state monad?
> >
> > I mean something that besides having "get", "gets" and "put" would have
> > some kind of "add" and "gets":
> >
> > add :: a -> State ()
> > gets :: State (Maybe a)
> >
> > or
> >
> > add :: LabelName -> a -> State ()
> > gets :: LabelName -> State (Maybe a)
> >
> >
> > So that I can extend the state without using additional monad
> > transformers. Monad transformers are very hard for beginners and
> > scramble error messages
> >
> > I did the first option for MFlow, hplayground and Transient packages
> > (setSData and getSData). But my solution uses a map indexed by type and
> > this requires a lookup for each access.
> >
> > I would like to know if there is an alternative with no lookups. I´m not
> > obsessed with speed but In some applications the speed may be
> important....
> >
> > Anyone?
>
>
> If you care about the error message quality, you'd rather stay away from
> extensible records.
>
> And if you care about speed, most (all?) extensible records give you
> O(n) access, so you'd be actually better off with a simple (Hash)Map.
>
> Roman
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150506/02b93279/attachment.html>
More information about the Haskell-Cafe
mailing list