enum map ======== - a map from enum -> values - should support both open and closed enums - should support absent values in case of closed enums - should support data in constant data section two types: type CompleteEnumMap (all values are known to exist. can only be used with closed enums) type IncompleteEnumMap (some values might be absent) example use case: data String prefix = "/usr/local" data IncompleteEnumMap prefixes = { .exec_prefix = "/usr/local/x86_64-linux-gnu" }