summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index a1663217..c5afc004 100644
--- a/lib.c
+++ b/lib.c
@@ -84,6 +84,8 @@ val null_list;
val identity_f, equal_f, eql_f, eq_f, car_f, cdr_f;
+val gensym_counter;
+
val prog_string;
static val env_list;
@@ -1633,6 +1635,15 @@ val make_sym(val name)
return obj;
}
+val gensymv(val args)
+{
+ uses_or2;
+ gensym_counter = plus(gensym_counter, one);
+ val prefix = or2(car(args), lit("g"));
+ val name = format(nil, lit("~a~,04a"), prefix, gensym_counter, nao);
+ return make_sym(name);
+}
+
val make_package(val name)
{
if (find_package(name)) {
@@ -3273,6 +3284,7 @@ static void obj_init(void)
identity_f = func_n1(identity);
car_f = func_n1(car);
cdr_f = func_n1(cdr);
+ gensym_counter = zero;
prog_string = string(progname);
}