#ifndef __SCHEME_ITEM_H__
#define __SCHEME_ITEM_H__

typedef enum {
    INT_TYPE, REAL_TYPE, STR_TYPE, CONS_TYPE, NULL_TYPE, PTR_TYPE
} item_type_t;

typedef struct scheme_item_t {
    item_type_t type;
    union {
        int i;
        double r;
        char *s;
        struct {
            struct scheme_item_t *car;
            struct scheme_item_t *cdr;
        };
        void *ptr;
    };
} scheme_item_t;

#endif // __SCHEME_ITEM_H__
