>
> > I'm already writing a section called "C/Scheme interface" where I
> > explain that scm_integer_p (x) == SCM_BOOL_T isn't correct.
>
> Well, it works as long as scm_is_eq works the same as ==.  But that's an
> implementation detail of Guile and not part of the Guile API.  Bypassing
> the Guile API here does not buy us anything regarding efficiency, and it
> is not helpful for debugging and newcomers who should not be required to
> know internals of Guile.
>

Of course, this is bizarre for newcomers... But there's something else that
actually mislead me before we started working on this.
In the Guile reference, it is written that scm_string_p returns #t or #f.
And it is also written that scm_is_string returns 0 or 1. Because it isn't
written SCM_BOOL_T and SCM_BOOL_F, I always thought 0 and 1 were Scheme
values. This, of course, totally broke my understanding of these functions.
I pointed out this logical error in the piece of doc I will push.

It is somewhat amusing, by the way, that Lilypond's to_boolean is
> required in order to let '() and #f be interpreted in the same manner.
> It would seem that Lisp's conflating them into `nil' is not the worst
> idea.

This also mislead me a long time ago.

Bertrand
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to