有用な内部関数

HCl ではsystemパッケージに数多くの有用な関数が埋もれています。 その中で重要と思われるものをいくつか挙げておきます。
(system:get-character-syntax char readtable)
charreadtableにおいて定義されているsyntax value(整数) を返す。syntax valueは下表で定義されている。
	List of syntax values
	
	      Syntax type        Syntax value
	----------------------------------------
	|| White               |     1        ||       
	|| Terminal Macro      |     4        ||
	|| Non-terminal Macro  |     8        ||
	|| Single Escape       |    16        ||
	|| Multiple Escape     |    32        ||
	|| Alphabetic          |   0x90       ||
	|| Digit               |   0xa0       ||
	|| Alphabetic or Digit |   0xb0       ||
	----------------------------------------
	
(system:set-character-syntax char readtable syntax)
readtablecharacterに付属するsyntaxをsyntaxにセット する。
(system:env-to-list environment)
environmentをリスト形式に変換する。
system:env-to-listは3値を返す。第一値は変数環境リストであり、
((var . value) ...)の形式のa-listである。第二値は関数環境リスト であり、((fname type def) ...)の形式である。typeはfunctionあるいはmacroである。 第三値はブロック ((block-name type lexical-pointer) ..)の形式である。typeはblock あるいはtagbodyである。system:env-to-listによってevalhook,applyhookなど が受け取る環境オブジェクトを解析することができる。
(system:get-environment-list env)
system:env-to-listと同様であるが値を多値ではなく一個のリストとして 返す。
(system:merge-environment env v-env f-env b-env)
環境オブジェクトenvにリスト表現された変数環境、関数環境、ブロック 環境を付け加える。もしenvがnilならば新たに環境オブジェクトを作成 する。
(system:get-byte integer)
integerをアドレスとしてそこから1バイト取り出し正整数とする。
(system:get-halfword integer)
integerをアドレスとしてそこから2バイト取り出し正整数とする。
(system:get-word integer)
integerをアドレスとしてそこから4バイト取り出し整数とする。
(system:put-byte integer value)
integerをアドレスとしてそこにvalueを1バイト書き込む。
(system:put-halfword integer value)
integerをアドレスとしてそこにvalueを2バイト書き込む。
(system:put-word integer value)
integerをアドレスとしてそこにvalueを4バイト書き込む。
(system::make-object-from-pointer pointer type)
pointerが指すアドレスにあるCのデータ構造をHCl のデータ構造に 変換する。typeは型識別子であり、integer,fixnum,character,string float,double-floatが使える。

もくじ