Fluent 中最根本的类型要属 struct obj,来看看它的源码先。
struct obj
{
union {
struct {fixnum ncell; struct obj *vcell;} symbol;
struct {struct obj *car; struct obj *cdr;} cons;
struct {struct obj *env; struct obj *code;} closure;
struct {fixnum ncell; struct obj *(*f)();} subr;
struct {unsigned char data;} character;
struct {fixnum data;} fixednum;
struct {flonum data;} floatnum;
struct {fixnum ncell; fixnum length;} string;
struct {fixnum ncell; fixnum length;} vector;
struct {fixnum ncell; short valid;} continuation;
struct {fixnum ncell; struct obj *next;} free;
struct {fixnum ncell;} port;
struct {fixnum id; char *data;} foreign;
} as;
Sshortint gc_mark;
Sshortint type;
};
它由三部分组成:联合体 as,GC 标记和类型编号。
其中 as 的变化很多,可以用来表示需要的各种类型数据。
下面是一些数据类型的编号:
#define tc_nil 0
#define tc_true 1
#define tc_false 31 </