* Roman Cheplyaka <r...@ro-che.info> [2012-10-24 13:55:17+0300]
> * Jon Fairbairn <jon.fairba...@cl.cam.ac.uk> [2012-10-24 11:08:29+0100]
> > Is there a convenient way of handling a data structure with lots
> > of fields of different types that may or may not be filled in?
> > 
> > Something equivalent to
> > 
> > data D = D {a::Maybe A, b::Maybe B, c::Maybe C, …}
> > 
> > but with better space efficiency and a more convenient empty
> > object.
> > 
> > An easy alternative is
> > 
> > data E = Ea A | Eb B | Ec C | …
> > type R = [E]
> > 
> > which has a straightforward empty object, but one then must
> > define
> > 
> >    getA e = listToMaybe [a | Ea a <- e]
> > 
> > for each field, which is tedious (and O(n)). Obviously Templates
> > would help, but is there an alternative I’ve missed?
> 
> For runtime efficiency it's better to use Data.Map.

Actually, you can use Data.IntMap for even better performance, if you
define an Enum instance for your keys.

Roman

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to