On Mon, 8 Apr 2019 at 11:49, Thomas Morley <[email protected]> wrote:

> Am Mo., 8. Apr. 2019 um 10:07 Uhr schrieb Gianmaria Lari
> <[email protected]>:
> >
> > I try to explain what I'm trying to do.
> >
> > I want some functions helping me to numbering exercise like this:
> >
> > 1
> > 2
> > 3
> > 3.1
> > 3.2
> > 3.3
> > 4
> > 4.1
> > 4.2
> >
> > etc.
>
> > I thought that an alternative approach that looks nice to try but it's
> over-engineering would be to create a single function able to do the work
> of the three functions according to a parameter. Something like
> >
> >
> > #(define (indenter operation l) .....)
> >
> >
> > if the "operation" argument is "inc" the indenter function has to inc,
> if the "operation" argument is "indent" the indenter function has to indent
> etc. I hope I have been clear.
> > This solution is nice because encapsulate all - data and structure - and
> has no problem to modify the list that would be a local persistent data (I
> don't remember how you call it in scheme).
> >
>
> How about:
>
> foo =
> #(let ((x (cons 1 0)))
>   (define-scheme-function (arg)(symbol?)
>     (case arg
>       ((indent) (set! x (cons (car x) (1+ (cdr x)))))
>       ((increase) (set! x (cons (1+ (car x)) 0)))
>       ((reset) (set! x (cons 1 0))))
>     (if (zero? (cdr x))
>         (format #f "~a" (car x))
>         (format #f "~a.~a" (car x) (cdr x)))))
>
> \markup \foo #'start
> \markup \foo #'indent
> \markup \foo #'indent
> \markup \foo #'indent
> \markup \foo #'increase
> \markup \foo #'indent
> \markup \foo #'indent
> \markup \foo #'indent
>
>
> \markup \foo #'reset
> \markup \foo #'indent
> \markup \foo #'increase
> \markup \foo #'indent
>

it's a bit different from what I wanted but I think there is all the things
I need to make what I prefer. Thanks a lot Harm!
It will take some time to understand it all. I'm studying it :)

Ciao, g.
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to