Hi Robert,

I've started a new thread on the topic under discussion of the difficulty
of learning Scheme. This comes up frequently. Putting my programmer hat on,
it's a common experience for programmers brought up in C family languages
to be baffled and daunted by Scheme and Lisp family languages. But it's
worth noting that MIT taught Scheme as the fundamental undergraduate
computer language for many, many years. This is because the insight Scheme
gives one into computer science thinking is really valuable, no matter what
language you may go on to later. MIT sadly now teaches Python instead.
There are a large number of people that regard this as a mistake and a
decline in educational quality, mere vocational training.

The thing about Lisp and Scheme is that there is so little syntax that you
can pick it up in an hour. As for all the nested parentheses, any decent
editor (ahem, emacs...) handles the brackets and indenting for you, leading
to readable code and ease of typing. It;s the conceptual shift that people
find difficult. But really, putting in an initial effort invariably leads
to an epiphany related by all Lisp programmers, where one day you just _get
it_. It's an interesting experience. After that, you regard the world
differently.

The fantastic thing about lilypond is that it is extensible with Scheme,
and that makes Scheme definitely worth learning of you want to do
sophisticated things with lilypond. GNU had a concept of use Scheme as an
extension language for its whole ecosystem, and this is why Guile was
created. This never really took off, but lilypond is one of the shining
examples of this GNU concept.

Scheme as Guile in the context of lilypond can be complex, because it is a
highly domain specific environment, but Scheme people are a friendly lot in
general and there are many learned colleagues on the list willing to help,
and there are no stupid questions (except maybe those lacking an MWE :-)).
I really feel the investment in time improves your work in non Lisp
languages, gives you a foothold in Functional Programming, and allows you
to take the out of the box already superb lilypond output to even more
refined heights. I cant think of any downside except the time invested -
but it's just so worthwhile.

As to learning materials, each person will have their own recommendations.
I would recommend obtaining a copy of SICP, Structure and Interpretation of
Computer Programs, by Ableson and Sussman, the MIT text and classic of
computer science. This is the famous Wizard book, from the cover picture.
My hardback copy sits on my bookshelf near me just to give daily
inspiration. Although out of print, the full text is available on the web:

https://mitpress.mit.edu/sites/default/files/sicp/index.html

Amazingly, MIT has released films of Sussman himself teaching MIT 6.001 in
1986. Highly recommended.

https://ds26gte.github.io/tyscheme/


For a quick introduction, there's Teach Youself Scheme in Fixnum Days, by
Dorai Sitaram:

https://ds26gte.github.io/tyscheme/

Also recommended is The Scheme Programming Language by Kent Dybvig, also
online:

https://scheme.com/tspl4/

Many other references and material can be found at:

http://schemers.org/

Andrew

As a footnote, I would not recommend learning Scheme for lilypond via
Racket. Racket is a great Lisp dialect, but it is so extensively extended
compared to Scheme that all the nice things you learn generally can't be
applied, so it just gets frustrating in our context. But they have great
documentation.
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to