The following symbols may be used with operator to define or redefine
operators on structures and built-in types:
- + * / % ^ ! < > == != <= >= & | ^^ .. :: -- --- ++ << >> $ $$ @ @@ <>
The operators on the second line have precedence one higher than the
boolean operators <, >, <=, and >=.
Guide operators like .. may be overloaded, say, to write
a user function that produces a new guide from a given guide:
guide dots(... guide[] g)=operator ..;
guide operator ..(... guide[] g) {
  guide G;
  if(g.length > 0) {
    write(g[0]);
    G=g[0];
  }
  for(int i=1; i < g.length; ++i) {
    write(g[i]);
    write();
    G=dots(G,g[i]);
  }
  return G;
}
guide g=(0,0){up}..{SW}(100,100){NE}..{curl 3}(50,50)..(10,10);
write("g=",g);
See Autounravel, for an example overloading the + operator.