summaryrefslogtreecommitdiff
path: root/libguile/boolean.c
diff options
context:
space:
mode:
authorBT Templeton <bpt@hcoop.net>2011-06-15 20:21:28 -0400
committerBT Templeton <bpt@hcoop.net>2012-02-03 18:53:38 -0500
commit9348168ed53d1d24a4936e384c04da45d5c89b4f (patch)
treed9c0a869d6b336ae9c893c969fe9d48a49274e44 /libguile/boolean.c
parent6937c7aa8b36037a546e0825fafc933dbd5cf90b (diff)
downloadguile-9348168ed53d1d24a4936e384c04da45d5c89b4f.tar.gz
add `nil?' primitive
* libguile/boolean.c (scm_nil_p): New function. * libguile/vm-i-scheme.c (nilp, not_nilp): * libguile/vm-i-system.c (br_if_nil, br_if_not_nil): New instructions. Renumber other ops. * libguile/_scm.h (SCM_OBJCODE_MINOR_VERSION): Increment. * module/language/assembly/compile-bytecode.scm (compile-bytecode): Add support for writing `br-if-nil' and `br-if-not-nil' instructions. * module/language/assembly/disassemble.scm (code-annotation): Add `br-if-nil' and `br-if-not-nil' to the list of branch instructions. * module/language/tree-il/compile-glil.scm: Add `nil?' to `*primcall-ops*'. (flatten): Use the new branch instructions for `nil?' conditionals. * module/language/tree-il/primitives.scm: Add `nil?' to `*interesting-primitive-names*', `*effect-free-primitives', and `*effect+exception-free-primitives*'.
Diffstat (limited to 'libguile/boolean.c')
-rw-r--r--libguile/boolean.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libguile/boolean.c b/libguile/boolean.c
index 3bf672d6d..f8c773839 100644
--- a/libguile/boolean.c
+++ b/libguile/boolean.c
@@ -62,6 +62,14 @@ SCM_DEFINE (scm_not, "not", 1, 0, 0,
}
#undef FUNC_NAME
+SCM_DEFINE (scm_nil_p, "nil?", 1, 0, 0,
+ (SCM x),
+ "Return @code{#t} iff @var{x} is nil, else return @code{#f}.")
+#define FUNC_NAME s_scm_nil_p
+{
+ return scm_from_bool (scm_is_lisp_false (x));
+}
+#undef FUNC_NAME
SCM_DEFINE (scm_boolean_p, "boolean?", 1, 0, 0,
(SCM obj),