* 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