> For example, I am currently clueless about any practical value in something > like > "applicative order Y combinator" that is discussed at some length in > "The Little Schemer". Y combinators. Yes, those will exercise your mind. I still can't figure them out from scratch, but I can understand them when I read them. And no, I haven't figured out any practical value of them. They are useful in Mathematics more than programming. Some links (interestingly, they are all titled the Why of Y. I guess programmers all share the same dry sense of humor - the first link is the best): ftp://ftp.cs.indiana.edu/pub/scheme-repository/doc/pubs/Y.ps.gz http://www.cs.cornell.edu/courses/cs312/2002fa/lectures/lec27.pdf http://www.dreamsongs.com/NewFiles/WhyOfY.pdf Most scheme features have more practical value thatn that :) Continuations, for example, allow for some really tough programs to be implemented really cleanly. If you've ever wished that programming web pages had better, "more normal" flow control, you can do that with continuations. Unfortunately, ViaWeb was the only application to really take advantage of that. So far, no application-server has :( Some links to these ideas: http://www-spi.lip6.fr/~queinnec/Papers/www.ps.gz http://www-spi.lip6.fr/~queinnec/Papers/webcont.ps.gz http://lib1.store.vip.sc5.yahoo.com/lib/paulgraham/bbnexcerpts.txt Upon further google search, it appears that the PLT web server and something called Seaside (in smalltalk, it seems) may do this! I'll have to look into it further. > I guess my question is where did the ideas for some of the advanced > concepts come from. From practical necessity, or from theoretical > considerations? Academic politics? Some other reasons? Everything starts in academia. EVERYTHING. Usually what happens is that academia has a great idea, and then the business world makes it work well and usable by normal people, sometimes sacrificing some of the beauty of the academic work, but chewable by more people. For example, Perl and Python are both very Schemish languages. Unfortunately, in the CS world, we seem to be going backward rather than forward. So yes, all of these are useful. The problem is that these academic languages have really crappy runtime libraries. If you're looking for a project to help out with GNU, perhaps making decent libraries for GUILE would be the best way to go. > I'm curious enough now to proceed with SICP whether or not it has > any practical value. > > But I don't want to make the mistake of > jumping into a practical project using impractical tools, regardless > of what Stallman and the Gnu group recommend. Yes, Scheme is not always a practical tool, for the reason I outlined above. Anyway, I remember at one point some people were curious about real-world uses of Scheme. I went blank at the time, but I remember more now. * DSSSL - a styling language that uses scheme to define styles for XML documents. Because you have the full power of a great programming language at your hands, you can do amazing things with it. I'm just now getting back into this for making a publishing workflow for a ministry I'm strating (http://www.tgministries.org/). * GIMP - SCheme is the primary language for scripting the GIMP. At my company, we built a web-based product, and used GIMP scripts to automate creating the buttons and headers. You can see the login page (which has both) at http://service.newmediamail.com/ I know there's others, but I'm late leaving work! My wife might injure me. Jon