static変数は自動変数と異なり,関数が起動される毎に初期化されることなく, ずっと存在し続ける。これは,static変数が関数内で私的な永久記憶をもつを ことを意味する。
static変数は0に初期化されることが保証されるので,ユーザが陽に初期化
する必要はない。リストは成分が0個のリストとして初期化される。
Func void afo()
{
static Integer i; // 0 に初期化される
static Real r; // 0.0 に初期化される
static Complex c; // (0,0) に初期化される
static Polynomial P; // 0 に初期化される
static Rational R; // 0 に初期化される
static List l; // {} に初期化される
i = i + 1;
r = r + 1;
c = c + (1,0);
P = P + 1;
R = R + 1;
appendlist(l, 1);
}
Func void afo()
{
static Matrix A;
if (length(A) == 0) {
A = [1];
} else {
A = A + [1];
}
}