<< Prev | - Up - |
Note that we can also use our abstraction in the degenerate case where we compute the product of just 1 domain. In that case, however, there is a bijection between the elements of the domain and the integers 1 to n of the encoding. It turns out to be often convenient to be able to map an element of the domain to its corresponding integer rather than to encode it into the singleton containing that integer. For this reason, we add a feature toint
to the class:
toint
For products of 2 or more domains, this feature is not used and is simply set to unit
, but for a 1-product it is a dictionary mapping each domain element to its corresponding integer. Here is how we initialize the feature:
case Domains of [Dom] then
ToInt = {NewDictionary}
in
self.toint = ToInt
for K in Dom do
case Val2Ints.K of [I] then
ToInt.K := I
end
end
else self.toint=unit end
<< Prev | - Up - |