Am Mittwoch, 14. Januar 2015 12:34 CET, Urs Liska <u...@openlilylib.org> schrieb:
> > >>> #(define (annotation? obj) > >>> (and > >>> (list? obj) > >>> (every pair? obj) > >>> (if (assoc-ref obj "type") #t #f) > >>> (if (assoc-ref obj "location") #t #f))) > > ... and is this just equivalent to: > > > > #(define (annotation? obj) > > (and > > (list? obj) > > (every pair? obj) > > (assoc-ref obj "type") > > (assoc-ref obj "location"))) > > > > > > ??? > > I don't think so because the result of the function would be the result > of the last expression. > assoc-ref returns the "value" to the "key", so if passed a valid object > the result of the predicate wouldn't be #t but the content of "location". > That's why I enclosed these checks in if constructs. Richard is right, the if-clauses aren't neccessary. Scheme has the concept "generalized" booleans, i.e. anything that isn't explicitly false is considered to be true: guile> (if 42 'true 'false) I was just trying to keep as much of your code as possible .... Cheers, RalfD _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user