summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eval.c6
-rw-r--r--share/txr/stdlib/compiler.tl2
2 files changed, 7 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index 865c97b3..0db5d77b 100644
--- a/eval.c
+++ b/eval.c
@@ -2717,6 +2717,11 @@ static val fmt_flex(val obj, val plist, struct args *args)
return do_format_field(fmt_tostring(obj), n, sep, range_ix, plist, nil);
}
+static val fmt_join(struct args *args)
+{
+ return cat_str(args_get_list(args), lit(""));
+}
+
val subst_vars(val forms, val env, val filter)
{
list_collect_decl(out, iter);
@@ -6432,6 +6437,7 @@ void eval_init(void)
reg_fun(intern(lit("fmt-simple"), system_package), func_n5(fmt_simple));
reg_fun(intern(lit("fmt-flex"), system_package), func_n2v(fmt_flex));
+ reg_fun(intern(lit("fmt-join"), system_package), func_n0v(fmt_join));
reg_varl(user_package_s = intern(lit("user-package"), user_package_var),
user_package_var);
diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl
index 1926885e..24fa5c2a 100644
--- a/share/txr/stdlib/compiler.tl
+++ b/share/txr/stdlib/compiler.tl
@@ -1097,7 +1097,7 @@
(defun expand-quasi (form)
(let ((qa (expand-quasi-args form)))
- ^(append ,*qa)))
+ ^(sys:fmt-join ,*qa)))
(defun expand-dohash (form)
(mac-param-bind form (op (key-var val-var hash-form : res-form) . body) form