lilypond-user
[Top][All Lists]
Advanced

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

Re: scheme function


From: Gianmaria Lari
Subject: Re: scheme function
Date: Thu, 20 Dec 2018 13:15:37 +0100


On Thu, 20 Dec 2018 at 13:12, Gianmaria Lari <address@hidden> wrote:


On Thu, 20 Dec 2018 at 13:10, Urs Liska <address@hidden> wrote:


Am 20. Dezember 2018 13:02:22 MEZ schrieb David Kastrup <address@hidden>:
>Gianmaria Lari <address@hidden> writes:
>
>> %alternate version
>> \version "2.19.82"
>> nextcount =
>>   #(let  ((counter 0))
>>      (lambda ()
>>        (set! counter (1+ counter))
>>        (number->string counter)))
>>
>> \markup #(nextcount)
>> \markup #(nextcount)
>>
>>
>> I would like to know if it is possible to write it using
>> define-scheme-function. This is what I tried that does not compile.
>>
>> \version "2.19.82"
>> nextcount =
>>   #(define-scheme-function () ()
>>      (let  ((counter 0))
>>      (lambda ()
>>        (set! counter (1+ counter))
>>        (number->string counter)
>>        )
>>      ))
>>
>> \mark \nextcount
>> \mark \nextcount
>
>Uh, there is a difference between \markup and \mark .  Once you fixed
>that, your counter will be reset to 0 for each invocation of the
>function.  You need
>
>nextcount =
>  #(let ((counter 0))
>     (define-scheme-function ...
>
>instead.

And it must be

  (set! counter (+ 1 counter))

(first the procedure "+", then the arguments)

I think 1+ is correct. David use it :)) (I hope I don't remember bad)

I mean, it's not only David: it works, I found it some documentation about it and it looks (to me) the equivalent of increment operator ++ in c.


reply via email to

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