Am Donnerstag, den 15. Mai 2014 um 10:09:10 Uhr (+0200) schrieb Urs Liska:
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
address@hidden
https://lists.gnu.org/mailman/listinfo/lilypond-user
_______________________________________________
lilypond-user mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/lilypond-user