D01 コマンドと関数

GeoGebraでは、新規のツールを作成することがプログミングに相当します。組み込みのツールや自分で作成したツールは別のツールの作成に使用でき、入力バーでコマンドとしても入力できます。しかし、GeoGebraではプログラムすることが主眼ではないので、プログラミングにはかなりの制限があります。上述のように関数型言語に近いプログラミングをするのですが、多態性があまりなく、リスト処理が充実しておらず、再帰が扱えないのが弱点です。

本格的にプログラムを組むならばJavaScriptを利用することになりますが、それは別の所で説明します(まだしていません)。

まず、簡単な例として、数値に1を加えるプログラムを考えると、

f(x) = x+1

と関数で定義することも出来ますし、

としてツールを作成することも出来ます。このコマンド名を G とすると、入力バーに

f(10)

と入力しても

G[10]

と入力しても同じ結果11が得られます。

ただし、プログラムが関数で作成できる場合は、そうする方が応用がききます。それは、

    • 関数があればそれを用いて同機能のツールを作成できるが、逆は一般には無理

    • Iteration や IterationList のコマンドの引数で、関数を受け付けるがコマンドは受け付けないものがある

という理由からです。

また、別の例として階乗を考えます。組み込みの演算子で x! とできますが、再帰による関数・ツール定義を試みてみます。関数であれば、入力バーで

f(x) = If[x==1, 1, x f(x-1)]

と定義したいところですが、右辺に f を用いることができずエラーが発生します。また、同等の機能を持つツールを再帰を用いて定義しようとしても、エラー以前にこのような再帰的な定義自体不可能です (ちなみに互いに他を呼ぶような2つの関数やツールを用いて再帰することも不可能です)。

このように、一般には再帰によるプログラムは不可能ですが、工夫により同等のプログラムが可能な場合もあります(2項間漸化式3項間漸化式参照)。