diff --git a/mes.c b/mes.c index 17f338d4..9da7e327 100644 --- a/mes.c +++ b/mes.c @@ -724,6 +724,29 @@ list_to_vector (scm *x) return v; } +scm* +number_to_string (scm *x) +{ + assert (x->type == NUMBER); + char buf[256]; + sprintf (buf,"%d", x->value); + return make_string (buf); +} + +scm* +string_to_symbol (scm *x) +{ + assert (x->type == STRING); + return make_symbol (x->name); +} + +scm* +symbol_to_string (scm *x) +{ + assert (x->type == SYMBOL); + return make_string (x->name); +} + scm* vector_to_list (scm *v) { diff --git a/test.mes b/test.mes index 476fbe86..e1769c3b 100644 --- a/test.mes +++ b/test.mes @@ -268,4 +268,16 @@ (display (procedure? procedure?)) (newline) +(define *gensym* 0) +(define (gensym) + (set! *gensym* (+ *gensym* 1)) + (string->symbol (string-append "g" (number->string *gensym*)))) + +(display (gensym)) +(newline) +(display (gensym)) +(newline) +(display (gensym)) +(newline) + '()