dfsch_object_t* dfsch_make_constant_ast_node(dfsch_object_t* value){ if (DFSCH_SYMBOL_P(value) || DFSCH_PAIR_P(value)){ return dfsch_generate_quote(value); } else { return value; } }
dfsch_object_t* dfsch_constant_expression_value(dfsch_object_t* expression, dfsch_object_t* env){ if (DFSCH_SYMBOL_P(expression)){ if (!env){ return DFSCH_INVALID_OBJECT; } return dfsch_variable_constant_value(expression, env); } else if (dfsch_quote_expression_p(expression)){ return DFSCH_FAST_CAR(expression); } else if (DFSCH_PAIR_P(expression)){ return DFSCH_INVALID_OBJECT; } else { return expression; } }
int dfsch_symbol_p(dfsch_object_t* obj){ return DFSCH_SYMBOL_P(obj); }
int dfsch_keyword_p(dfsch_object_t* obj){ return DFSCH_SYMBOL_P(obj) && dfsch_symbol_package(obj) == DFSCH_KEYWORD_PACKAGE; }