Go to the first, previous, next, last section, table of contents.

### `arfreg`

`arfreg(name,add,sub,mul,div,pwr,chsgn,comp)`
  :: 構造体に体する基本演算を登録する.

return
  1
name
  文字列
add sub mul div pwr chsgn comp
  ユーザ定義関数

- name なる構造体型に対する基本演算を登録する.
- 登録したくない基本演算に対しては引数に 0 を与える. これによって一部の演算のみを利用することができる.
- それぞれの関数の仕様は次の通りである.
  `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}

`参照`
  section `newstruct`, section 構造体定義

Go to the first, previous, next, last section, table of contents.