guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 58/99: Implement built-in symbol procedures.


From: Christopher Allan Webber
Subject: [Guile-commits] 58/99: Implement built-in symbol procedures.
Date: Sun, 10 Oct 2021 21:51:00 -0400 (EDT)

cwebber pushed a commit to branch compile-to-js-merge
in repository guile.

commit 2adebea5d0694a00b62ec32108da5f6d05c33579
Author: Ian Price <ianprice90@googlemail.com>
AuthorDate: Wed Aug 2 21:14:57 2017 +0100

    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 e7d78e1..1107282 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));



reply via email to

[Prev in Thread] Current Thread [Next in Thread]