標準ライブラリー

標準ライブラリーは、言語仕様の一部として規定された、パステルステッチのコードである。標準ライブラリーのオブジェクトコードは standard.lib.xml というファイル名でインストールされる。Filesystem Hierarchy Standard に従っているプラットフォームでは、標準ライブラリーのオブジェクトコードは、以下のいずれかの場所にインストールされる。

ここで product はプロダクトにより異なる文字列である。例えば、リファレンス実装のバージョン 5 では ref5 を用いる。

この文書では標準ライブラリーの仕様と、その実装の例を示す。仕様が同等であれば、実装はこの文書と一致しなくてもよい。

引数解決ディレクティブのヒエラルキー

標準ライブラリーでは、いくつかの標準的なグループに対して、引数解決ディレクティブのヒエラルキーを定義する。標準のグループ mainmain とそれに関連するグループについて、以下のヒエラルキーが設定される。

^code Standard hierarchy
^initialize
hierarchy: high (main + top) low (main)
hierarchy: high (main) low (main + bottom)
^end-code

標準ライブラリー自身で使用するグループについては、以下のようにヒエラルキーが設定される。

^code Hierarchy for standard library
^initialize
hierarchy: high (standard library + top) low (standard library)
hierarchy: high (standard library) low (standard library + bottom)
^end-code

これらのヒエラルキーは以下のように結合される。

^code Hierarchy connection
^initialize
hierarchy: high (main + bottom) low (standard library + top)
^end-code

既定の手続き

標準ライブラリーは以下の手続きを提供する。

手続き echomainmain 引数の値をそのまま返す。

^code Echo
^procedure echo
	return: #main
^end-code
^code Echo names
^not-for-interpreter
	register name: echo
^end-code

手続き haltmain は処理を中断してインタープリターを終了する。

^code Halt
^procedure halt
	[terminal continuation]: argument pack [get arguments: #offset]
^end-code
^code Halt names
^not-for-interpreter
	register name: halt
^end-code

手続き pausemain は処理を中断してインタープリターを終了し、残りの処理を中断可能実行キューに登録する。

^code Pause
^procedure pause
	^if [is resumable]
		^continuation resumable +
			post resumable continuation: [resumable +]
			free: main [get dynamic environment identifier: [resumable +]]
			> by [get default identifier]
			terminal continuation
^end-code
^code Pause names
^not-for-interpreter
	register name: pause
^end-code

アドレスコレクション

アドレスコレクションのため、標準ライブラリーは以下の引数解決ディレクティブを提供する。

^code Address collection default
suggest: if ($verb = collect) evaluate [collect + default] hint (collect)
^end-code

名前検査器ディレクティブ

標準ライブラリーは以下の wild names 名前検査器ディレクティブを提供する。

^code Wild names
^not-for-interpreter
wild names: scope (global) main (anyargument)
wild names: scope (global) main (anyresolution argument)
wild names: scope (global) main (anycontinuation argument)
wild names: scope (global) main (anyargument symbol)
wild names: scope (global) main (anystatic local name)
wild names: scope (global) main (anymentioned above)
^end-code

また、この文書で使用されている複合名が register name 名前検査器ディレクティブで登録される。

式検査器ディレクティブ

標準ライブラリーは以下の式リストを提供する。これらの姓は main である。

これらの式リストは、対応するカプセルのメソッドディスクリプターのリストである。例えば、timer methods 式リストは以下のように定義される。

^code Timer methods
^not-for-interpreter
accept expression: list (timer methods) expression (type)
accept expression: list (timer methods) expression (clear)
accept expression: list (timer methods) expression (now)
^end-code