From 2adebea5d0694a00b62ec32108da5f6d05c33579 Mon Sep 17 00:00:00 2001 From: Ian Price Date: Wed, 2 Aug 2017 21:14:57 +0100 Subject: [PATCH] Implement built-in symbol procedures. * module/language/js-il/runtime.js (symbol->string, gensym): New procedures. --- module/language/js-il/runtime.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/module/language/js-il/runtime.js b/module/language/js-il/runtime.js index e7d78e1b6..11072829c 100644 --- a/module/language/js-il/runtime.js +++ b/module/language/js-il/runtime.js @@ -775,6 +775,22 @@ def_guile0("syntax-module", function (self, cont, obj) { return cont(obj.module); }); +// Symbols +def_guile0("symbol->string", function (self, cont, sym) { + return cont(new scheme.String(sym.name)); +}); + +var gensym_counter = 0; +function scm_gensym (self, cont, prefix) { + var name = prefix ? prefix.s : "gen "; + name += gensym_counter; + gensym_counter += 1; + + return cont(new scheme.Symbol(name)); +}; +def_guile0("gensym", scm_gensym); + + // Strings def_guile0("string=?", function (self, cont, s1, s2) { return cont(coerce_bool(s1.s === s2.s));