RPL (プログラミング言語)
RPLは、ヒューレット・パッカード社(HP社)が開発した小型電卓のオペレーティングシステム (OS) の一部であり、アプリケーションプログラミング言語である(初期開発者によるとReverse Polish Lispに由来する。一方、HP社のマーケティングは1987年の短い期間の間、RPLから逆にROM-based Procedural Languageという意味をこじつけで作り出そうとした)。
"Reverse Polish"は逆ポーランド記法(後置記法)を意味しており、直訳するなら『逆ポーランド式(後置記法式)LISP』となる。後置記法やスタック指向などという点ではForthとも類似している。
ヒューレット・パッカード社の科学技術計算グラフRPN(逆ポーランド記法)電卓のHP 28 シリーズ、HP 48 シリーズ、HP 49/50 シリーズで使われた。
FOR/NEXT構造は、あるインデックス値から他のインデックス値までのループをサポートする。ループ用のインデックス値はループ内でプログラムからアクセス可能な一時的ローカル変数(インデックス変数)に格納される。FOR/NEXT構造の文法は以下のようになる。
以下の例は1から10までの数値を合計するためにFORループを使っている。FORループのインデックス変数は"I"である。
(説明)プログラムの最初の0は実行されて、スタックに入れられる。次の行の '1 10' も実行されて、2つの値がスタックに入る。FOR文はスタックから2つの値(1と10)を取り出して、インデックス変数Iに1を代入する。10は終了条件としてFOR文が保持する(スタックには返さない)。このとき、最初に入れた0がスタックの底辺に残ることになる。FOR文とNEXT文の間に 'I +' という実行される文がある。最初の I はインデックス変数であり、1から10の値をとる。Iはオブジェクトでもあるので、実行されるとスタックに入れられる。I=1のとき、スタックには0と1が入ることになる。次の + はコマンドである(多くの言語では + を演算子とするが、RPLではコマンド扱い)。+コマンドはスタックから2つのオブジェクトを取り出して加算して、その結果をスタックに入れる。I=1のとき、+コマンド実行前のスタックには0と1が入っているので、0 + 1 = 1となり、結果の1をスタックに入れる。I=2のとき、+コマンド実行前のスタックには1と2が入っているので、1 + 2 = 3となり、結果の3をスタックに入れる。この繰り返しで1から10までの数値を合計する。