% 関数仕様 - 型関数
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変数の操作関数です。
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_pint lisp_hold_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は0以外を返却します。
lisp_hold_valuevoid lisp_hold_value(addr x, addr *ret);
入力: x オブジェクト
出力: ret オブジェクトの返却
もしxがhold変数の場合は、値を取り出しretに返却します。
もしxがhold変数ではない場合は、xをそのままretに返却します。
lisp_hold_setvoid lisp_hold_set(addr x, addr value);
入力: x hold変数
入力: value オブジェクト
hold変数xにオブジェクトを格納します。
もしvalueがhold変数の場合は、
valueが保有しているオブジェクトをxに格納します。
Lisp_holdvaddr Lisp_holdv(addr x);
入力: x オブジェクト
戻り値: オブジェクト
関数lisp_hold_valueのinplace版です。
xがhold変数の場合は、格納されているオブジェクトを返却します。
xがhold変数ではない場合は、入力をそのまま返却します。
lisp_holdvoid lisp_hold(addr *ret, addr value);
入力: value オブジェクト
出力: ret hold変数
hold変数を作成し、valueを格納してからretに返却します。
もしvalueがhold変数の場合は、値を取り出してから格納します。
Lisp_holdaddr Lisp_hold(void);
戻り値: hold変数
hold変数を作成し返却します。
hold変数が保有する値はNILです。
nilとtオブジェクトの格納関数です。
void lisp_nil(addr x);
void lisp_t(addr x);
addr Lisp_nil(void);
addr Lisp_t(void);
lisp_nilvoid lisp_nil(addr x);
出力: x hold変数
hold変素xにnilオブジェクトを格納します。
lisp_tvoid lisp_t(addr x);
出力: x hold変数
hold変素xにtオブジェクトを格納します。
Lisp_niladdr Lisp_nil(void);
戻り値: nil
nilオブジェクトを返却します。
Lisp_taddr Lisp_t(void);
戻り値: t
tオブジェクトを返却します。
型チェックの関数です。
■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_pint lisp_nil_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがnilであれば0以外を返却します。
lisp_t_pint lisp_t_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがtであれば0以外を返却します。
lisp_null_pint lisp_null_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがNULLポインターであれば0以外を返却します。
NULLポインターはC言語の(void *)0のことであり、
Common LispのNILとは違います。
lisp_character_pint lisp_character_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xが文字型であれば0以外を返却します。
lisp_cons_pint lisp_cons_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがconsであれば0以外を返却します。
lisp_list_pint lisp_list_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがlistであれば0以外を返却します。
listとは、NILかconsのことです。
lisp_string_pint lisp_string_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがstringであれば0以外を返却します。
stringとは、LISPTYPE_STRING型のオブジェクトか、
あるいはLISPTYPE_ARRAY型でかつ
1次元のcharacter型specialized arrayのことです。
lisp_strvect_pint lisp_strvect_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがLISPTYPE_STRING型であれば0以外を返却します。
Common Lispのstringpとは違います。
lisp_symbol_pint lisp_symbol_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがsymbolであれば0以外を返却します。
lisp_array_pint lisp_array_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがLISPTYPE_ARRAY型であれば0以外を返却します。
Common Lispのarraypとは違います。
int lisp_vector_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがLISPTYPE_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_pint lisp_fixnum_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがLISPTYPE_FIXNUM型であれば0以外を返却します。
Common Lispの(typep x 'fixnum)とは厳密には違いますが、
通常の使用で差異が生じることはありません。
lisp_bignum_pint lisp_bignum_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがLISPTYPE_BIGNUM型であれば0以外を返却します。
lisp_integer_pint lisp_integer_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがinteger型であれば0以外を返却します。
lisp_ratio_pint lisp_ratio_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがratio型であれば0以外を返却します。
lisp_rational_pint lisp_rational_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがrational型であれば0以外を返却します。
lisp_single_float_pint lisp_single_float_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがsingle-float型であれば0以外を返却します。
lisp_double_float_pint lisp_double_float_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがdouble-float型であれば0以外を返却します。
lisp_long_float_pint lisp_long_float_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがlong-float型であれば0以外を返却します。
lisp_float_pint lisp_float_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがfloat型であれば0以外を返却します。
lisp_real_pint lisp_real_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがreal型であれば0以外を返却します。
lisp_complex_pint lisp_complex_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがcomplex型であれば0以外を返却します。
lisp_number_pint lisp_number_p(addr x);
入力: x オブジェクト
戻り値: bool値
xがhold変数の場合は、内容が評価されます。
xがnumber型であれば0以外を返却します。