Node:User-defined Operators, Previous:Built-in Operators, Up:Operators
GNU Pascal allows the (re-)definition of binary operators according
to the Pascal-SC (PXSC) syntax. The following vector addition
example illustrates how to do this:
program OperatorDemo; type Vector3 = record x, y, z: Real; end; var a, b, c: Vector3 = (1, 2, 3); operator + (u, v: Vector3) w: Vector3; begin w.x := u.x + v.x; w.y := u.y + v.y; w.z := u.z + v.z; end; begin c := a + b end.
Between the closing parenthesis of the argument list and the result
variable (w
in the above example), GPC allows an optional
equal sign. This is not allowed in PXSC, but it is consistent with
Extended Pascal's function result variable definitions, where the
equal sign is obligatory (but also optional in GPC).
The argument types needn't be equal, and the name of the operator may be an identifier instead of a known symbol. You cannot define new symbols in GPC.
The PXSC operators +>
, +<
, etc. for exact numerical
calculations currently are not implemented in GPC, but you can
define them. Also, the other real-type operators do not meet
the requirements of PXSC; a module which fixes that would be a
welcome contribution.