[Haskell-cafe] Sparse records/ADTs
Jon Fairbairn
jon.fairbairn at cl.cam.ac.uk
Wed Oct 24 12:08:29 CEST 2012
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?
--
Jón Fairbairn Jon.Fairbairn at cl.cam.ac.uk
More information about the Haskell-Cafe
mailing list