lilypond-user
[Top][All Lists]
Advanced

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

Scheme learning


From: Andrew Bernard
Subject: Scheme learning
Date: Sun, 27 May 2018 21:38:46 +1000

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.






reply via email to

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