mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Improve the documentation for 'nil?'.
* libguile/boolean.c (scm_nil_p): Improve docstring. * doc/ref/api-languages.texi (Nil): Add documentation for 'nil?', along with a description of how Elisp interprets Scheme booleans and end-of-list.
This commit is contained in:
parent
e4da1b456a
commit
0c0a658c56
2 changed files with 30 additions and 4 deletions
|
@ -1,7 +1,7 @@
|
||||||
@c -*-texinfo-*-
|
@c -*-texinfo-*-
|
||||||
@c This is part of the GNU Guile Reference Manual.
|
@c This is part of the GNU Guile Reference Manual.
|
||||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2010
|
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2010, 2016,
|
||||||
@c Free Software Foundation, Inc.
|
@c 2017, 2018 Free Software Foundation, Inc.
|
||||||
@c See the file guile.texi for copying conditions.
|
@c See the file guile.texi for copying conditions.
|
||||||
|
|
||||||
@node Other Languages
|
@node Other Languages
|
||||||
|
@ -108,6 +108,24 @@ code to maintain their current semantics. @code{nil}, which in Elisp
|
||||||
would just be written and read as @code{nil}, in Scheme has the external
|
would just be written and read as @code{nil}, in Scheme has the external
|
||||||
representation @code{#nil}.
|
representation @code{#nil}.
|
||||||
|
|
||||||
|
In Elisp code, @code{#nil}, @code{#f}, and @code{'()} behave like
|
||||||
|
@code{nil}, in the sense that they are all interpreted as @code{nil} by
|
||||||
|
Elisp @code{if}, @code{cond}, @code{when}, @code{not}, @code{null}, etc.
|
||||||
|
To test whether Elisp would interpret an object as @code{nil} from
|
||||||
|
within Scheme code, use @code{nil?}:
|
||||||
|
|
||||||
|
@deffn {Scheme Procedure} nil? obj
|
||||||
|
Return @code{#t} if @var{obj} would be interpreted as @code{nil} by
|
||||||
|
Emacs Lisp code, else return @code{#f}.
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(nil? #nil) @result{} #t
|
||||||
|
(nil? #f) @result{} #t
|
||||||
|
(nil? '()) @result{} #t
|
||||||
|
(nil? 3) @result{} #f
|
||||||
|
@end lisp
|
||||||
|
@end deffn
|
||||||
|
|
||||||
This decision to have @code{nil} as a low-level distinct value
|
This decision to have @code{nil} as a low-level distinct value
|
||||||
facilitates interoperability between the two languages. Guile has chosen
|
facilitates interoperability between the two languages. Guile has chosen
|
||||||
to have Scheme deal with @code{nil} as follows:
|
to have Scheme deal with @code{nil} as follows:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 1995-1996,2000-2001,2006,2008-2011,2018
|
/* Copyright 1995-1996,2000-2001,2006,2008-2011,2018,2019
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Guile.
|
This file is part of Guile.
|
||||||
|
@ -65,7 +65,15 @@ SCM_DEFINE (scm_not, "not", 1, 0, 0,
|
||||||
|
|
||||||
SCM_DEFINE (scm_nil_p, "nil?", 1, 0, 0,
|
SCM_DEFINE (scm_nil_p, "nil?", 1, 0, 0,
|
||||||
(SCM x),
|
(SCM x),
|
||||||
"Return @code{#t} iff @var{x} is nil, else return @code{#f}.")
|
"Return @code{#t} if @var{x} would be interpreted as @code{nil}\n"
|
||||||
|
"by Emacs Lisp code, else return @code{#f}.\n"
|
||||||
|
"\n"
|
||||||
|
"@example\n"
|
||||||
|
"(nil? #nil) @result{} #t\n"
|
||||||
|
"(nil? #f) @result{} #t\n"
|
||||||
|
"(nil? '()) @result{} #t\n"
|
||||||
|
"(nil? 3) @result{} #f\n"
|
||||||
|
"@end example")
|
||||||
#define FUNC_NAME s_scm_nil_p
|
#define FUNC_NAME s_scm_nil_p
|
||||||
{
|
{
|
||||||
return scm_from_bool (scm_is_lisp_false (x));
|
return scm_from_bool (scm_is_lisp_false (x));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue