A.4 SmallPartial.oz

functor 
import 
   Select at 'x-ozlib://duchier/cp/Select.ozf' 
   SmallLexicon
   Encode FS
export 
   PartialAgreement
   GetPartialAgreement
define 
   PartialAgreement =
   {New Encode.domainProduct
    init([[masc fem neut]
          [sing plur]])}
   1#N = SmallLexicon.agreement.range
   Projection = {Tuple.make o N}
   for I in 1..do 
      case {SmallLexicon.agreement decode(I $)}
      of [[Gender Number _ _ _]] then 
         S = {PartialAgreement encode([[Gender Number]] $)}
         [J] = {FS.reflect.lowerBoundList S}
      in 
         Projection.I = J
      end 
   end 
   proc {GetPartialAgreement A1 A2 P}
      P = {Select.fd Projection A1}
      P = {Select.fd Projection A2}
   end 
end


Denys Duchier
Version 1.2.0 (20010221)