ユーザによる函数の定義は `def' 文で行う. 文法エラーは読み込み時に
ある程度チェックされ, おおよその場所が表示される.
既に(引数の個数に関係なく)同名の函数が定義されている場合には,
その函数は再定義される. ctrl()
函数により verbose
フラグ
が on になっている場合,
afo() redefined.
というメッセージが表示される. ある函数の定義において, まだ未定義の函数 を呼び出していても, 定義時にはエラーにならない. 実行時に未定義の函数 を呼び出そうとした場合にエラーとなる.
def f(X) { if ( !X ) return 1; else return X * f(X-1); } def c(N) { A = newvect(N+1); A[0] = B = newvect(1); B[0] = 1; for ( K = 1; K <= N; K++ ) { A[K] = B = newvect(K+1); B[0] = B[K] = 1; for ( P = A[K-1], J = 1; J < K; J++ ) B[J] = P[J-1]+P[J]; } return A; }
2 つ目の例では, 長さ N+1
のベクトル (A
とする) が返される.
A[I]
は長さ I+1
の配列であり, そのそれぞれの要素が
を要素とする配列である.
以下では, C によるプログラミングの経験がない人のために, Asir 言語 によるプログラムの書き方を解説する.
Go to the first, previous, next, last section, table of contents.