functor (Weight : WEIGHT-> S