/* l_types.c - Procedures that manipulate types in L. Samuel A. Rebelsky Version 0.1 of 3 March 2007 */ #include #include #include "l.h" pair make_int(int val) { return allocate_pair(L_INT, (pointer) val); } /* make_int(int) */ pair make_string(char *val) { char *result = (char *) malloc(1 + strlen(val)); strcpy(result, val); return allocate_pair(L_STRING, (pointer) result); } /* make_string(char *) */ pair make_symbol(char *val) { return insert(val); } /* make_symbol(char *) */ int is_nil(pair val) { return L_NIL == val; } /* is_null(pair) */ int is_int(pair val) { return L_INT == val->car; } /* is_int(pair) */ int is_string(pair val) { return L_STRING == val->car; } /* is_string(pair) */ int is_symbol(pair val) { return L_SYMBOL == val->car; } /* is_symbol(pair) */ int is_pair(pair val) { pointer car = CAR(val); return (car != L_STRING) && (car != L_SYMBOL) && (car != L_INT); } /* is_pair(pair) */