lilypond-devel
[Top][All Lists]
Advanced

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

Re: Order of 'label-page-table


From: David Kastrup
Subject: Re: Order of 'label-page-table
Date: Thu, 25 Oct 2012 13:35:38 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux)

Thomas Morley <address@hidden> writes:

> Well, I managed to order the list with some scheme-code:
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%
>
> #(define l '((f . 4)(g . 4)(d . 3)(e . 3)(c . 2) (a . 1) (b . 1)))
>
> #(define (split-at-equal-cdr alist)
> "After `split-at-predicate´ from lily-library.scm
>  BTW, why is it not public?
> "
>   (if (null? alist)
>     (list alist)
>     (let ((i (list-index
>                (lambda (x y) (not (= (cdr x) (cdr y))))
>                  alist
>                  (cdr alist))))
>        (if i
>            (cons (take alist (1+ i)) (drop alist (1+ i)))
>            (list alist)))))
>
> #(define (order-alist l)
>     (define (helper l1 l2)
>         (if (null? l1)
>           l2
>           (helper
>             (cdr (split-at-equal-cdr l1))
>             (append (car (split-at-equal-cdr l1)) l2))))
>   (helper l '()))
>
> #(write (order-alist l))
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%
>
> Returns: ((a . 1) (b . 1) (c . 2) (d . 3) (e . 3) (f . 4) (g . 4))
> and would be ok.

Eyes glaze over.  Wouldn't
(sort-list l (lambda (a b) (< (cdr a) (cdr b))))
work here?

> Is there any reason for the default-behaviour of 'label-page-table?

No idea.

-- 
David Kastrup




reply via email to

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