>
>> Thanks Urs:
>>
>> That worked.   Problem was that I did not know that the results would be
>> displayed in the log window.   The tutorial I am using had some example
>> like  (+ 1 2 3)  =>  and I was expecting 6 in the same window on the next
>> line when I compiled.
>>
>>
>> This is what one refers to as a REPL (read-eval-print-loop), which is
>> what LilyPond's Scheme sandbox does.
>>
>>   This may be what you mean by " but no immediate expression
>> evaluation".
>>
>>
>> Yes. Frescobaldi deals with LilyPond *files*, not an immediate expression
>> evaluation.
>>
>> Is => valid in guile?
>>
>>
>> No.
>>
>>  How would I display the results of (+ 1 2 3), at this point of the
>> tutorial it just says  "(+ 1 2 3)  =>   6"?
>>
>>
>> When a tutorial writes "=>" it means: "You type in '(+ 1 2 3)', and the
>> REPL will display '6'. So "=>" isn't a syntactical construct but a
>> typographical convention for "the expression to the left evaluates to the
>> datum on the right".
>>
>> Tutorials usually want you to learn from this immediate evaluation, and
>> in Frescobaldi you have to always do that extra step to display something.
>> But in general it's worth the effort, and I do that 90% of the time when I
>> want to try something out or learn more about Scheme.
>>
>> ​​
>> For displaying values you can use #(display) or #(ly:message "Some value:
>> ~a" data) (to start with ...)
>>
>> HTH
>> Urs
>>
>>
>> Thank you,
>> ƒg​
>>
>> ​Urs:
>
> In you first example #(let...) what function does 'let' preform?    From
> your examples in "​For displaying values you can use #(display) or
> #(ly:message "Some value: ~a" data) (to start with ...)", could you
> please give me examples of each?   I need this to study the tutorial using
> Frescobaldi.
>
>
> OK, it probably wasn't such a good idea to use non-atomic examples.
> Let me try to put it another way: what you have in Frescobaldi is a
> LilyPond file. This file may include Scheme code, and LilyPond even works
> if there is *only* Scheme code in the file and no score is even generated.
> That way you can use LilyPond and Frescobaldi as a tool to experiment with
> Scheme code.
>
​When I started this post​ I was hoping that Scheme work with out score.

>
> The way to include Scheme in LilyPond is the '#'. Whenever LilyPond
> encounters this hash it will have the immediately following expression
> evaluated by Scheme. Essentially the expression is replaced by the
> resulting value.
>
​This helped​

​a lot.​

>
> What you have already noticed is that this Scheme code is not evaluated
> immediately (as is done on a REPL and what your tutorial seems to assume),
> but only when compiling the LilyPond file.
>
> One more thing to understand is the following: any Scheme expression
> *evaluates to* something (like (+ 1 2 3) evaluates to 6). In a REPL this
> value is displayed but in LilyPond/Frescobaldi it is not. If you write #(+
> 1 2 3) in a LilyPond file it *will* evaluate to 6 but it only has the
> effect of placing that value 6 in the LilyPond file, which will have no
> effect at all.
>
​I figured this​.

>
> The additional effort you have to make is explicitly print any value you
> want to inspect to the log window. Scheme provides some functions for that
> purpose: display, print, pretty-print, and more.
> ​​
>   #(define my-var 12)
>   #(display my-var)
> will print '12' to the log window,
>   #(display (+ 1 2 3))
> will print '6'
>
​Now this helped because I was making it work with #(let...; above is much
simpler.

>
> Note that display won't add a line break, so when you want to see more
> than one value you'll want to add #(newline) expressions in between.
>
​Read that sum place.​


>
> A final remark: there are many Scheme implementations (or dialects)
> around, with more or less subtle differences. When you use LilyPond you
> have a very specific dialect available (the Guile implementation in its
> version 1.8), plus when starting up LilyPond a number of extra Guile
> modules and many LilyPond features are automatically added. This means that
> when you follow a "Scheme tutorial" not necessarily everything will match
> what you find in LilyPond.
>
> [And please allow me a plug: you may find rewarding to have a look at
> https://scheme-book.ursliska.de, which is far from complete but aims at
> giving a slow-paced and detailed introduction specifically from a LilyPond
> perspective]
>
​This is what I have been looking for.   Is there a PDF?    ​

​Check your ​URL in this:
Last part of https://scheme-book.ursliska.de/scheme/expressions.html
"You can and should for now ignore everything you don't know about that
(we'll soon cover it in the chapter about variable binding
<https://scheme-book.ursliska.de/scheme/binding.html>) but simply realize
that within that “mess” we have inserted ..."

​Thank you, ƒg
​

Best
Urs


​Thank you,
ƒg​


>
> ​​
>
>
>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to