Hi all, I am working on a Scheme function and would like to check if I have found the best solution for a specific subpart. Somehow it looks more complicated than necessary.
The function needs to test if each element of a given list is a (sub)list with exactly two elements. So '((1 2)(3 4)) would return #t while '((5 6)(7 8 9)) would return #f. My solution is \version "2.19.6" validate = #(define-scheme-function (parser location lst) (list?) (if (memv #f (map (lambda sig (and (list? (car sig)) (= 2 (length (car sig))))) lst)) (display "invalid") (display "valid")) (newline)) { \validate #'((1 2)(3 4)) \validate #'((5 6)(7 8 9)) } The "framework" doesn't matter, it's just a compilable example. My question is only about the "if" expression. What it does is: - go through the elements of lst - produce a list of boolean values, - #t if we have a two element list, - #f if not - check if this intermediate list contains at least one #f Somehow this looks clumsy to me, and I'd like to know (and learn) if there's a better solution for this. TIA Urs
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user