David Kastrup <d...@gnu.org> writes: > Bertrand Bordage <bordage.bertr...@gmail.com> writes: > >> 2011/8/17 David Kastrup <d...@gnu.org> >> >> Bertrand Bordage <bordage.bertr...@gmail.com> writes: >> >> >> > This would be great if Han-Wen decides to keep it like that. >> > Otherwise there is really a lot of work, with many shortcuts to >> > define. >> > to_boolean (scm_is_pair (x)) >> >> >> That one would be wrong since scm_is_pair already returns a C >> boolean. >> >> >> I was thinking about scm_pair_p ()... >> This is typically the kind of mistakes that should be solved. >> Shame on me, I won't do it again. >> >> Where did you find SCM_CONSP ? >> I don't see it in guile's reference. Maybe something to add to the CG >> ? > > Guile reference manual for Guile 1.8, "Pair data". It is even indexed. > What version of the Guile manual are you using? To quote: > > Guile implements pairs by mapping the CAR and CDR of a pair directly > into the two words of the cell. > > -- Macro: int SCM_CONSP (SCM X) > Return non-zero iff X is a Scheme pair object. > > -- Macro: int SCM_NCONSP (SCM X) > The complement of SCM_CONSP.
However, I found that as a reasonably dependable heuristic, "functions" scm_is_* are implemented as macros after all. That is probably why we have scm_is_eq, but not scm_is_equal which needs to be done by something like scm_is_true (scm_equal_p (...)) instead. Or by ly_is_equal (which we have). So here I would just use scm_is_pair and !scm_is_pair. -- David Kastrup _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel