2004-07-16 02:26:21 -04:00
|
|
|
typedef struct {
|
|
|
|
CELL car;
|
|
|
|
CELL cdr;
|
|
|
|
} CONS;
|
|
|
|
|
|
|
|
INLINE CONS* untag_cons(CELL tagged)
|
|
|
|
{
|
|
|
|
type_check(CONS_TYPE,tagged);
|
|
|
|
return (CONS*)UNTAG(tagged);
|
|
|
|
}
|
|
|
|
|
|
|
|
INLINE CELL tag_cons(CONS* cons)
|
|
|
|
{
|
|
|
|
return RETAG(cons,CONS_TYPE);
|
|
|
|
}
|
|
|
|
|
2004-07-24 17:37:42 -04:00
|
|
|
CONS* cons(CELL car, CELL cdr);
|
2004-07-16 02:26:21 -04:00
|
|
|
|
|
|
|
INLINE CELL car(CELL cons)
|
|
|
|
{
|
|
|
|
return untag_cons(cons)->car;
|
|
|
|
}
|
|
|
|
|
|
|
|
INLINE CELL cdr(CELL cons)
|
|
|
|
{
|
|
|
|
return untag_cons(cons)->cdr;
|
|
|
|
}
|
|
|
|
|
|
|
|
void primitive_consp(void);
|
|
|
|
void primitive_cons(void);
|
|
|
|
void primitive_car(void);
|
|
|
|
void primitive_cdr(void);
|
2004-08-03 02:08:11 -04:00
|
|
|
void primitive_set_car(void);
|
|
|
|
void primitive_set_cdr(void);
|