純関数は、関数宣言式によって定義される関数です。関数宣言式は、
func 関数名 ([引数名 [, 引数名]...]) 式
という形式で定義します。関数宣言の式の値は、関数そのものとなります。
定義した関数を呼び出すには、
関数名 ( 式1, 式2 ...)
関数名 ()
と、関数名に続いて `(' を書き、引数の指定が必要なときは、 引数を並べ、 最後に`)'で引数列を閉じます。また、引数がない場合は、`()' と1対のカッ コを記述します。引数が2つ以上あるときは、引数を`,'で区切ります。呼び出 した関数の返す値は関数本体の式の値となります。
以下に、関数定義と、その呼びだし型の例を示します。
例1. 2つの値の大きいものを返す関数 maxfunc max (a, b)
if (a > b) a ;
else b ;
var a = 10, b = 20, maxval ;
maxval = max(a, b) ;
Cmmの関数は、再帰呼びだしができます。そこで、おなじみの例です。
例2. 階乗計算factfunc fact (n) {
if (n == 0) 1 ;
else n * fact (n - 1) ;
}
fact(10) ;
この2つの例を見ればわかるように、Cmmは、すべて式で構成されるので、 値を返すためにreturn式を使わなくても関数を記述することができます。
関数宣言式の文法構造は、以下のようになります。
関数宣言式 `func' <識別子> '(' [<仮引数列>] ')' <式>
仮引数列 <識別子> [`,' <識別子>]