Am 12.07.2018 um 23:04 schrieb Freeman Gilmore:


On Thu, Jul 12, 2018 at 4:54 PM, Urs Liska <[email protected] <mailto:[email protected]>> wrote:

    Hi Freeman,

    I'm not completely sure about the internals but #(display)
    procduces its output in some unpredictable manner. Sometimes, when
    you (display) some very large structures it may be totally
    interrupted by other output (at least in Frescobaldi).

    When you want more reliable output (especially if you want to
    follow the order of operations) you could rather use

    mylist = #(list 'red random 12)
    #(ly:message "My list: ~a" mylist)

    Good luck
    Urs


    Am 12.07.2018 um 20:17 schrieb Freeman Gilmore:
    I am using Frescobaldi and studying the Scheme Book.    When I
    compile,

    mylist = #( list 'red random 12 )
    #(display mylist)

    I get two different results in the LilyPond Log, see below.   
    The line,

    (red #<primitive-procedure random> 12)

    changes positions randomly when compile.   Would someone explain?

    Thank you, ƒg*/
    /*

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Starting lilypond-windows.exe 2.19.81 [Untitled]...

    Processing
    `c:/users/free/appdata/local/temp/frescobaldi-1jampp/tmpzk5nkr/document.ly
    <http://document.ly>'

    Parsing...

    (red #<primitive-procedure random> 12)

    c:/users/free/appdata/local/temp/frescobaldi-1jampp/tmpzk5nkr/document.ly:1
    <http://0>: warning: no \version statement found, please add

    \version "2.19.81"

    for future compatibility

    Success: compilation successfully completed

    Completed successfully in 0.9".

    *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
    Starting lilypond-windows.exe 2.19.81 [Untitled]...

    Processing
    `c:/users/free/appdata/local/temp/frescobaldi-1jampp/tmpzk5nkr/document.ly
    <http://document.ly>'

    Parsing...

    c:/users/free/appdata/local/temp/frescobaldi-1jampp/tmpzk5nkr/document.ly:1
    <http://0>: warning: no \version statement found, please add

    \version "2.19.81"

    for future compatibility

    (red #<primitive-procedure random> 12)

    Success: compilation successfully completed

    Completed successfully in 0.7".



    _______________________________________________
    lilypond-user mailing list
    [email protected] <mailto:[email protected]>
    https://lists.gnu.org/mailman/listinfo/lilypond-user
    <https://lists.gnu.org/mailman/listinfo/lilypond-user>


    _______________________________________________
    lilypond-user mailing list
    [email protected] <mailto:[email protected]>
    https://lists.gnu.org/mailman/listinfo/lilypond-user
    <https://lists.gnu.org/mailman/listinfo/lilypond-user>

​Thank you Urs, to make it clear just use simple numbers it dos the same:

mylist = #( list  6 12 )
#(display mylist)​

Yes, it doesn't have anything to do with *what* you print to the console but with *how* (i.e. "display" versus "ly:message"). As David pointed out there are different output channels for a program: stderr and stdout. Probably the issue is that Frescobaldi (that interacts with the LilyPond terminal through Python and PyQt) fetches this output through a mechanism called "Signals and Slots", which does not provide guaranteed order of operations but somehow responds to events. It is pretty likely that this is the cause for seemingly random order of output.

When you are in need of reliable instantaneous output you should use ly:message rather than display, although it takes a little more effort.

HTH
Urs

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

Reply via email to