## 関数 前にも関数を利用しましたが、それは`Simple`で元々組み込まれている関数を利用していたのです。もちろん、関数は自分で作る事が出来ます。 そもそも関数とは、処理を保存して好きな時に呼び出す仕組みの事です。 関数は戻り値を返したり引数(関数に渡すデータ)を取る事が出来ます。 平均を求める`average`関数を作ってみましょう。 ``` プログラム> func average(a, b) 関数averageを定義します 関数定義> var sum = a b + 関数定義> return sum 2 / 関数定義> end func メモリに関数を保存しました プログラム> mem 変数がありません +-- メモリ内の関数 | +-- average (a, b) | | 1: var sum = a b + | | 2: return sum 2 / ``` 関数を定義できました。 では、その`average`関数を呼び出してみましょう。 関数のコードは1行ずつ実行されるので、その間にデバッグメニューが表示されます。必要ない場合は`Enter`キーを押してスキップしてください。 ``` プログラム> average(5,8) +-- 式を計算します | Stack〔 〕← average(5,8) 引数の値を求めます +-- 式を計算します | Stack〔 〕← 5 結果 = 5 +-- 式を計算します | Stack〔 〕← 8 結果 = 8 関数averageを呼び出します 1行目の〔 var sum = a b + 〕を実行します 変数sumを定義します 値を求めます +-- 式を計算します | Stack〔 〕← a 変数aを読み込みます | Stack〔5 〕← b 変数bを読み込みます | Stack〔5, 8 〕← + 結果 = 13 メモリに変数を確保しました デバッグメニュー>>> 継続します 2行目の〔 return sum 2 / 〕を実行します 戻り値を返します +-- 式を計算します | Stack〔 〕← sum 変数sumを読み込みます | Stack〔13 〕← 2 | Stack〔13, 2 〕← / 結果 = 6.5 ``` 作った関数を呼び出すことが出来ました。 戻り値を式で利用する事も出来ます。 以下のコードを自分のREPLで実行してみましょう。 ``` "平均は" string(average(57, 89)) + ``` 上の式では`string`関数の中で`average`関数を呼び出しています。この入り組んだ構造を`ネスト`といいます。 関数はコードの再利用性を向上させるので非常に便利です。