Operator Overloading

Operators can be overloaded by defining them as messages.


(vector (list (x integer)
              (y integer))
  msg  ((+ vectorplus open t
                      argtypes (vector))))

(gldefun vectorplus ((v1 vector) (v2 vector))
  (a (typeof v1) with x = (x v1) + (x v2)
                      y = (y v1) + (y v2)))

The use of typeof lets the code use a type derived from an argument.

(gldefun t7 ((u vector) (v vector)) u + v)

result type: VECTOR
(LAMBDA (U V) (LIST (+ (CAR U) (CAR V))
                    (+ (CADR U) (CADR V))))

Contents    Page-10    Prev    Next    Page+10    Index