関数仕様 - 型関数

nptのドキュメントです。
参照元:ANSI Common Lisp npt

関数仕様

lisp.hに記載されている下記の関数仕様を示します。

■hold関数
int lisp_hold_p(addr x);
void lisp_hold_value(addr x, addr *ret);
void lisp_hold_set(addr x, addr value);
addr Lisp_holdv(addr x);
void lisp_hold(addr *ret, addr value);
addr Lisp_hold(void);

■nil, t
void lisp_nil(addr x);
void lisp_t(addr x);
addr Lisp_nil(void);
addr Lisp_t(void);

■type
int lisp_nil_p(addr x);
int lisp_t_p(addr x);
int lisp_null_p(addr x);
int lisp_character_p(addr x);
int lisp_cons_p(addr x);
int lisp_list_p(addr x);
int lisp_string_p(addr x);
int lisp_symbol_p(addr x);
int lisp_strvect_p(addr x);
int lisp_array_p(addr x);
int lisp_vector_p(addr x);

■数値型
int lisp_fixnum_p(addr x);
int lisp_bignum_p(addr x);
int lisp_integer_p(addr x);
int lisp_ratio_p(addr x);
int lisp_rational_p(addr x);
int lisp_single_float_p(addr x);
int lisp_double_float_p(addr x);
int lisp_long_float_p(addr x);
int lisp_float_p(addr x);
int lisp_real_p(addr x);
int lisp_complex_p(addr x);
int lisp_number_p(addr x);

■オブジェクト
int lisp_clos_p(addr x);
int lisp_hashtable_p(addr x);
int lisp_readtable_p(addr x);
int lisp_control_p(addr x);
int lisp_callname_p(addr x);
int lisp_function_p(addr x);
int lisp_package_p(addr x);
int lisp_random_state_p(addr x);
int lisp_pathname_p(addr x);
int lisp_stream_p(addr x);
int lisp_restart_p(addr x);
int lisp_environment_p(addr x);
int lisp_bitvector_p(addr x);
int lisp_print_dispatch_p(addr x);

■hold関数

hold変数の操作関数です。

int lisp_hold_p(addr x);
void lisp_hold_value(addr x, addr *ret);
void lisp_hold_set(addr x, addr value);
addr Lisp_holdv(addr x);
void lisp_hold(addr *ret, addr value);
addr Lisp_hold(void);

関数 lisp_hold_p

int lisp_hold_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は0以外を返却します。

関数 lisp_hold_value

void lisp_hold_value(addr x, addr *ret);

入力: x オブジェクト
出力: ret オブジェクトの返却

もしxがhold変数の場合は、値を取り出しretに返却します。
もしxがhold変数ではない場合は、xをそのままretに返却します。

関数 lisp_hold_set

void lisp_hold_set(addr x, addr value);

入力: x hold変数
入力: value オブジェクト

hold変数xにオブジェクトを格納します。
もしvalueがhold変数の場合は、 valueが保有しているオブジェクトをxに格納します。

関数Lisp_holdv

addr Lisp_holdv(addr x);

入力: x オブジェクト
戻り値: オブジェクト

関数lisp_hold_valueのinplace版です。
xがhold変数の場合は、格納されているオブジェクトを返却します。
xがhold変数ではない場合は、入力をそのまま返却します。

関数 lisp_hold

void lisp_hold(addr *ret, addr value);

入力: value オブジェクト
出力: ret hold変数

hold変数を作成し、valueを格納してからretに返却します。
もしvalueがhold変数の場合は、値を取り出してから格納します。

関数 Lisp_hold

addr Lisp_hold(void);

戻り値: hold変数

hold変数を作成し返却します。
hold変数が保有する値はNILです。

■nil, t

niltオブジェクトの格納関数です。

void lisp_nil(addr x);
void lisp_t(addr x);
addr Lisp_nil(void);
addr Lisp_t(void);

関数lisp_nil

void lisp_nil(addr x);

出力: x hold変数

hold変素xnilオブジェクトを格納します。

関数lisp_t

void lisp_t(addr x);

出力: x hold変数

hold変素xtオブジェクトを格納します。

関数Lisp_nil

addr Lisp_nil(void);

戻り値: nil

nilオブジェクトを返却します。

関数Lisp_t

addr Lisp_t(void);

戻り値: t

tオブジェクトを返却します。

■type

型チェックの関数です。

■type
int lisp_nil_p(addr x);
int lisp_t_p(addr x);
int lisp_null_p(addr x);
int lisp_character_p(addr x);
int lisp_cons_p(addr x);
int lisp_list_p(addr x);
int lisp_string_p(addr x);
int lisp_symbol_p(addr x);
int lisp_strvect_p(addr x);
int lisp_array_p(addr x);
int lisp_vector_p(addr x);

関数lisp_nil_p

int lisp_nil_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xnilであれば0以外を返却します。

関数lisp_t_p

int lisp_t_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xtであれば0以外を返却します。

関数lisp_null_p

int lisp_null_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xがNULLポインターであれば0以外を返却します。
NULLポインターはC言語の(void *)0のことであり、 Common LispのNILとは違います。

関数lisp_character_p

int lisp_character_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xが文字型であれば0以外を返却します。

関数lisp_cons_p

int lisp_cons_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xがconsであれば0以外を返却します。

関数lisp_list_p

int lisp_list_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xがlistであれば0以外を返却します。
listとは、NILかconsのことです。

関数lisp_string_p

int lisp_string_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xがstringであれば0以外を返却します。
stringとは、LISPTYPE_STRING型のオブジェクトか、 あるいはLISPTYPE_ARRAY型でかつ 1次元のcharacter型specialized arrayのことです。

関数lisp_strvect_p

int lisp_strvect_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xLISPTYPE_STRING型であれば0以外を返却します。
Common Lispのstringpとは違います。

関数lisp_symbol_p

int lisp_symbol_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xがsymbolであれば0以外を返却します。

関数lisp_array_p

int lisp_array_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xLISPTYPE_ARRAY型であれば0以外を返却します。
Common Lispのarraypとは違います。

関数`lisp_vector_p‘

int lisp_vector_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xLISPTYPE_VECTOR型であれば0以外を返却します。
Common Lispのvectorpとは違います。

■数値型

数値型の型関数です。

int lisp_fixnum_p(addr x);
int lisp_bignum_p(addr x);
int lisp_integer_p(addr x);
int lisp_ratio_p(addr x);
int lisp_rational_p(addr x);
int lisp_single_float_p(addr x);
int lisp_double_float_p(addr x);
int lisp_long_float_p(addr x);
int lisp_float_p(addr x);
int lisp_real_p(addr x);
int lisp_complex_p(addr x);
int lisp_number_p(addr x);

関数lisp_fixnum_p

int lisp_fixnum_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xLISPTYPE_FIXNUM型であれば0以外を返却します。
Common Lispの(typep x 'fixnum)とは厳密には違いますが、 通常の使用で差異が生じることはありません。

関数lisp_bignum_p

int lisp_bignum_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xLISPTYPE_BIGNUM型であれば0以外を返却します。

関数lisp_integer_p

int lisp_integer_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xinteger型であれば0以外を返却します。

関数lisp_ratio_p

int lisp_ratio_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xratio型であれば0以外を返却します。

関数lisp_rational_p

int lisp_rational_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xrational型であれば0以外を返却します。

関数lisp_single_float_p

int lisp_single_float_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xsingle-float型であれば0以外を返却します。

関数lisp_double_float_p

int lisp_double_float_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xdouble-float型であれば0以外を返却します。

関数lisp_long_float_p

int lisp_long_float_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xlong-float型であれば0以外を返却します。

関数lisp_float_p

int lisp_float_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xfloat型であれば0以外を返却します。

関数lisp_real_p

int lisp_real_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xreal型であれば0以外を返却します。

関数lisp_complex_p

int lisp_complex_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xcomplex型であれば0以外を返却します。

関数lisp_number_p

int lisp_number_p(addr x);

入力: x オブジェクト
戻り値: bool値

xがhold変数の場合は、内容が評価されます。
xnumber型であれば0以外を返却します。