GENERIC INTERFACE ElectricEvaluator (Atr, Erg); (* WHERE /\ TYPE Atr.T /\ Erg = Energy(Atr) *) TYPE T <: Erg.T; PROCEDURE New( READONLY q: ARRAY OF Atr.T; (* Charge positions *) READONLY w: ARRAY OF REAL; (* Charge magnitudes *) radius: LONGREAL; ): T; (* Returns an evaluator "e" that treats each attribute vector "q[j]" as the position of a fuzzy electric charge of magniture "w[j]" and approximate extent "radius". The value of "e(p)" is then the electric potential of a unitary negative electric charge at point "p". *) END ElectricEvaluator.