I'd like to have an Array indices values
(see http://haskell.org/onlinereport/array.html)
defined on [minBound::indices ... maxBound::indices].
The attached does this; however, it also allows
duplicate definitions (e.g. in the attached, the
value for Term index is defined twice).

Is there a better way to do this?  Maybe a
way that doesn't use all the contexts?
Also, is there a way to do it so that the value
associated with an index is not redefined?

In effect, I'm making a map, but using an Array
as the implementation because, I guess, it would be
a bit faster.

TIA.