How to Program Racket
docs.racket-lang.org
docs.racket-lang.org
The linked article is good and surprised me, especially using 'define' inside functions instead of 'let'.
... apart from reading good source written by others, which you can't really find by yourself since you lack the "good taste" needed to judge the quality of a piece of code. I'd be interested in a compilation of good snippets of source code for several languages. For example (I may be wrong) like PAIP for Common Lisp.
Once you work all the way through Part 1 of the book, you really do get a sense that Felleisen, et al. are trying to teach you the why and how of good program design, not simply introduce you to a particular syntax.
A small study group has been meeting in St. Louis since mid October 2014[2]. Slowly but surely, we're working our way through HtDP2e and learning a lot from the book and each during as we go along.
I don't think Felleisen, et al. get that much credit for this, except of course in having the uncommon wisdom in choosing The One True Way ^_^, which for instruction is the simple Lisp dialect of Scheme. There's almost no syntax to teach, e.g. literals (e.g. numbers and strings), atoms, lists, and special forms like define/lambda and if. Which of course is a major reason to use a Lisp for introductory programming, you spend seconds to minutes instead of weeks teaching syntax (of course the students spend a bit more time in the lab learning how to use the editor to properly indent the code so it can be comprehended, but isn't that pretty much what you must do with Python??).
BTW, a counterargument I recently came across in the great SICP vs. HoDP conflict is that the latter has no "magic". Does that resonate with you? (I can't comment having started reading SICP back when it was a lively Technical Report.)
I have not spent much time with SICP, so I can't really make a comparison. But I can speculate a little: the point of HtDP is to lay the foundation for and then form the reader-student according to a systematic "design recipe" that is expanded and refined as one works through the book. Many of the deeper ideas and surprises of computer programming are not explored, as they are in SICP, so fans of the latter would probably find HtDP to be a "flatter" learning experience.
Heh, but that doesn't work either ^_^. Sussman was the co-inventor of Scheme and still loves it, Ableson I don't know, and don't Felleisen et. al. love the syntax and Scheme at least to a substantial degree?
(I don't know anything about Racket, Felleisen and company essentially ended up doing a drive-by shooting of Scheme with R6RS, leaving a very bad taste in my mouth about them, their technical judgement and skill, language aesthetics, etc. ... but I gather I should look at what they've done.)
Well, the point of my original comment may have become obscured, I'm not sure.
It was that HtDP is not so much a book about Racket/Lisp/Scheme, as it is a book that aims primarily to impart sound fundamentals for the design of computer programs, regardless of the language used. And as I wrote previously, that becomes quite apparent by the end of Part 1, when the "design recipe" has seen its second major restatement.
By the way, I am only familiar with the 2nd edition of HtDP. I can't really comment on the 1st edition, and it's possible that it gives a different impression.
Yeah, SICP, going from the 2nd Edition because my previous edition copies were tossed or whatever, is that too, but aimed at teaching different things. Except for the 4th Chapter, Metalinguistic Abstractions, which of course introduces the metacircular interpreter ... but if that's "The Maxwell Equations of CS".... That chapter has other treats, and ends with logic programming.
And per Wikipedia and my general knowledge: "Before SICP, the introductory courses were almost always filled with learning the details of some programming language, while SICP focuses on finding general patterns from specific problems and building software tools that embody each pattern."
But of course, even if we agree this is the way to teach introductory courses, there is much debate on what to teach, with MIT abandoning SICP in the post-doc.com crash panic including a crash in enrollment.
(More than halved after being a steady 2/5th of the undergraduate body for decades. It's gone back up, BTW, along with Stanford's. CMU only accepts 135 students into its program, and UCB, being a state school, probably also has limits, explicit or implicit.)
Also at RacketCon 2014 Brian Masterbrook talked about using Racket at www.airstash.com for testing hardware: links at con.racket-lang.org
"Racket on the Playstation 3? It's Not What you Think!"