`arfreg'
--------

arfreg(NAME,ADD,SUB,MUL,DIV,PWR,CHSGN,COMP)
     :: Registers a set of fundamental operations for a type of
     structure.

RETURN
     1

NAME
     string

ADD  SUB  MUL  DIV  PWR  CHSGN  COMP
     user defined functions

   * This function registers a set of fundamental operations for a type
     of structure whose name is NAME.

   * The specification of each function is as follows.
    `add(A,B)'
          A+B

    `sub(A,B)'
          A-B

    `mul(A,B)'
          A*B

    `div(A,B)'
          A/B

    `pwr(A,B)'
          A^B

    `chsgn(A)'
          -A

    `comp(A,B)'
          1,0,-1 according to the result of a comparison between A and
          B.

     % cat test
     struct a {id,body}$
     
     def add(A,B)
     {
       C = newstruct(a);
       C->id = A->id; C->body = A->body+B->body;
       return C;
     }
     
     def sub(A,B)
     {
       C = newstruct(a);
       C->id = A->id; C->body = A->body-B->body;
       return C;
     }
     
     def mul(A,B)
     {
       C = newstruct(a);
       C->id = A->id; C->body = A->body*B->body;
       return C;
     }
     
     def div(A,B)
     {
       C = newstruct(a);
       C->id = A->id; C->body = A->body/B->body;
       return C;
     }
     
     def pwr(A,B)
     {
       C = newstruct(a);
       C->id = A->id; C->body = A->body^B;
       return C;
     }
     
     def chsgn(A)
     {
       C = newstruct(a);
       C->id = A->id; C->body = -A->body;
       return C;
     }
     
     def comp(A,B)
     {
       if ( A->body > B->body )
         return 1;
       else if ( A->body < B->body )
         return -1;
       else
         return 0;
     }
     
     arfreg("a",add,sub,mul,div,pwr,chsgn,comp)$
     end$
     % asir
     This is Risa/Asir, Version 20000908.
     Copyright (C) FUJITSU LABORATORIES LIMITED.
     1994-2000. All rights reserved.
     [0] load("./test")$
     [11] A=newstruct(a);
     {0,0}
     [12] B=newstruct(a);
     {0,0}
     [13] A->body = 3;
     3
     [14] B->body = 4;
     4
     [15] A*B;
     {0,12}

References
     *Note `newstruct': newstruct, *Note `structure definition':
     structure definition

