コロン定義(Colon Definitions)は、 他のプログラミング言語のプロシージャや関数に似ています。
: squared ( n -- n^2 ) dup * ; 5 squared . 7 squared .
:
はコロン定義を開始します。 その名前は squared
です。 それに続くコメントは、
そのスタック効果について説明しています。 dup *
というワードは実行はされませんが、 定義にコンパイルされます(compiled
into the definition)。 ;
はコロン定義を終了します。
新しく定義されたワードは、 他の定義での使用を含め、 他のワードと同様に使用できます:
: cubed ( n -- n^3 ) dup squared * ; -5 cubed . : fourth-power ( n -- n^4 ) squared squared ; 3 fourth-power .
研究課題(assignment):
nip
やtuck
やnegate
や/mod
のコロン定義を他の Forth ワードで記述し、 それらが機能するかどうかを確認してみましょう (ヒント: 最初にオリジナルであなたの作成したテストコードをテストして結果を確認してから、 その後あなたが定義して、 再度テストして結果を比較しましょう)。 ‘redefine’ メッセージに驚かないでください。 これらは単なる警告です。 (訳注: redefine; 同じ名前のワードを定義したという警告。 置き換えではなく追加となる。 これ以降の通訳(interpret)・コンパイルは新しい方のワードを参照するが、 通常は新しい方のワード定義後も、 既にコンパイル済みのワードは古い方のワードを参照しつづける。 詳しくはディクショナリー等の項目を参照)
こちらも参照してください: Colon Definitions