summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-08-20 20:10:43 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-08-20 20:10:43 -0700
commit0689691933695945e2f8f4ddd160da958bde936f (patch)
tree726a5d0d5f4dcd8eeae6d1845bb66357866679b8 /lib.c
parent607f0d271211e37d96ce7ba50a3f69372c000779 (diff)
downloadtxr-0689691933695945e2f8f4ddd160da958bde936f.tar.gz
txr-0689691933695945e2f8f4ddd160da958bde936f.tar.bz2
txr-0689691933695945e2f8f4ddd160da958bde936f.zip
New function: intern-fb.
To accompany find-symbol-fb, there is intern-fb, which is like intern, but searches the fallback list. * eval.c (eval_init): Register intern-fb intrinsic. * lib.c (intern_fallback_intrinsic): New function. Does defaulting and error checks, then calls intern_fallback, just like intern_intrinsic calls intern. * lib.h (intern_fallback_intrinsic): Declared. * txr.1: Documented.
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index 9d40f21c..d07a03ca 100644
--- a/lib.c
+++ b/lib.c
@@ -5532,6 +5532,17 @@ val intern_fallback(val str, val package)
}
}
+val intern_fallback_intrinsic(val str, val package_in)
+{
+ val self = lit("intern-fallback");
+ val package = get_package(self, package_in, nil);
+
+ if (!stringp(str))
+ uw_throwf(error_s, lit("~a: name ~s isn't a string"), self, str, nao);
+
+ return intern_fallback(str, package);
+}
+
val symbolp(val sym)
{
switch (type(sym)) {