lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: vecteur scheme


From: Gilles
Subject: Re: vecteur scheme
Date: Sat, 18 May 2013 00:26:12 +0200
User-agent: Opera Mail/12.15 (Linux)


et parmi tous les car, cdr, caar, cadr, cdar, cddr, caaar, caadr, cadar,
caddr, cdaar, cdadr, cddar, cdddr, caaaar, caaadr, caadar, caaddr, cadaar,
cadadr, caddar, cadddr, cdaaar, cdaadr, cdadar, cdaddr, cddaar, cddadr,
cdddar, cddddr yen a pas un qui pourrait faire l'affaire ?

Tu peux essayer de copier ça dans un fichier test.ly par exemple, puis compiler


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#(define cte
   (list
    (list 6 -1 0 2 2 2)
    (list 4 -1 0 1 2 2)
    (list 0 0 0 1 2 3)
    (list 1 0 0 2 2 3)
    (list 2 0 0 1 2 4)
    (list 3 0 0 2 2 4)
    (list 5 0 0 2 2 5)
    (list 4 0 0 1 2 5)
    (list 6 0 0 2 2 6)
    (list 0 1 0 1 2 6)
    (list 1 1 0 2 2 7)
    (list 2 1 0 1 2 7)
    (list 3 1 0 2 2 8)
    (list 4 1 0 1 2 8)
    (list 5 1 0 2 2 9)
    (list 0 2 0 1 2 9)
    (list 6 1 0 2 2 10)
    (list 2 2 0 1 2 10)
    (list 1 0 0 1 1 2)
    (list 3 1/2 0 2 1 2)
    (list 5 0 0 2 1 3)
    (list 4 0 0 1 1 3)
    (list 6 0 0 1 1 4)
    (list 0 1 0 2 1 4)
    (list 1 0 0 1 1 5)
    (list 2 1 0 2 1 5)
    (list 3 1 1/2 2 1 6)
    (list 4 1 0 1 1 6)
    (list 5 1 0 2 1 7)
    (list 6 1 0 1 1 7)
    (list 0 2 0 2 1 8)
    (list 1 1 0 1 1 8)
    (list 2 2 0 2 1 9)
    (list 4 1 0 1 1 9)
    (list 6 2 0 1 1 10)
    (list 3 2 1/2 2 1 10)
    (list 5 3 0 2 1 11)
    (list 1 2 0 1 1 11)
    (list 0 0  1/2 1 1 1)
    (list 1 0  1/2 2 1 1)
    (list 6 0 -1/2 1 2 1)
    (list 4 0  1/2 2 2 1)
   )
)

#(let ((elt (list-ref cte 2))) ; = le 3ème elt de cte
    (display (list-ref elt 3))(newline) ;  = le 4ème elt du 3ème elt de cte
    (display (list-ref elt 4))(newline) ; = le 5ème etc
    (display (list-ref elt 5))(newline))
    % => affiche 1, puis 2 puis 3

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Pour cte, on est obligé de passer par list-ref, à cause du nombre élevé d'éléments.
Par contre, comme chaque elt de cte est une liste de 6 elts, tu peux
utiliser
   first, second, third, fourth, fifth, sixth, comme défini ici :
http://www.gnu.org/software/guile/manual/guile.html#SRFI_002d1-Selectors
[Le module SRFI-1 est déjà chargé par Lilypond, on a rien à faire de particulier]
Ca clarifie un peu les choses :

#(let ((elt (list-ref cte 2))) ; = le 3ème elt de cte
    (display (fourth elt))(newline) ; = le 4ème elt du 3ème elt de cte
    (display (fifth elt))(newline)  ; = le 5ème etc
    (display (sixth elt))(newline))


--
Gilles



reply via email to

[Prev in Thread] Current Thread [Next in Thread]