% 関数仕様 - 型関数
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_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
オブジェクトの格納関数です。
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変素x
にnil
オブジェクトを格納します。
lisp_t
void lisp_t(addr x);
出力: x hold変数
hold変素x
にt
オブジェクトを格納します。
Lisp_nil
addr Lisp_nil(void);
戻り値: nil
nil
オブジェクトを返却します。
Lisp_t
addr 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_p
int lisp_nil_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がnil
であれば0以外を返却します。
lisp_t_p
int lisp_t_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がt
であれば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変数の場合は、内容が評価されます。
x
がLISPTYPE_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変数の場合は、内容が評価されます。
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_p
int lisp_fixnum_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がLISPTYPE_FIXNUM
型であれば0以外を返却します。
Common Lispの(typep x 'fixnum)
とは厳密には違いますが、
通常の使用で差異が生じることはありません。
lisp_bignum_p
int lisp_bignum_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がLISPTYPE_BIGNUM
型であれば0以外を返却します。
lisp_integer_p
int lisp_integer_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がinteger
型であれば0以外を返却します。
lisp_ratio_p
int lisp_ratio_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がratio
型であれば0以外を返却します。
lisp_rational_p
int lisp_rational_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がrational
型であれば0以外を返却します。
lisp_single_float_p
int lisp_single_float_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がsingle-float
型であれば0以外を返却します。
lisp_double_float_p
int lisp_double_float_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がdouble-float
型であれば0以外を返却します。
lisp_long_float_p
int lisp_long_float_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がlong-float
型であれば0以外を返却します。
lisp_float_p
int lisp_float_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がfloat
型であれば0以外を返却します。
lisp_real_p
int lisp_real_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がreal
型であれば0以外を返却します。
lisp_complex_p
int lisp_complex_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がcomplex
型であれば0以外を返却します。
lisp_number_p
int lisp_number_p(addr x);
入力: x オブジェクト
戻り値: bool値
x
がhold変数の場合は、内容が評価されます。
x
がnumber
型であれば0以外を返却します。