James Geddes wrote on 2/6/19 6:33 AM:
but in general I’ve not found elsewhere this tasteful combination of clarity and completeness. (Well, except RnRS, so maybe my prejudices are showing through.)
I mostly like RnRS. For one practitioner reason, you can hand many programmers the canonical R5RS spec, with the formal semantics and first-class continuations bits redacted,[1] :) they can read it for an hour on the train, and, at the end, there's a good chance they're thinking they could figure out how to use this, and it's kinda interesting. (Idiomatic use of it is a whole 'nother deal, such as how to really use recursion and tail calls, and minimize mutations, and how to use and take avantage of syntax extension-- but they could immediately sit down and start building a Pascal-with-parentheses program in less-idiomatic Scheme, which runs, and from there start learning idioms and power.)
Core Racket is *much* bigger than RnRS. If you just want to get day-one gist of "...and it has good-enough regexps... check!", you could squeeze all of those into a terse 1-hour read. But when you go to the manual to do work with core Racket on a daily basis, you often need more specification and explanation than fits in the brochure, preferably where you can confidently find it immediately.
I find other languages point me to books about the language that take too long to get a handle on the basics; and exhaustive references that seem to contain both more than I want and less than I need.
For everyone who is past the first day of Racket, and for every day after that, I'd ideally like for Racket to have the well-organized exhaustive Reference for the cor language and library, which includes the "For example..." inline that currently is in the Guide (and the Guide would be deleted). Separate tutorials can give gentle overviews and nudges towards the thinking, but afterwards, all a Racket practitioner usually needs is the Reference and the documentation for various non-core packages.
Imagine day-to-day working confidently from such a Reference of the core, not going first to Web searches and Stack Overflow because you don't trust that you can easily find it in the documentation.
[1] I strongly suspect that the first-class continuations or scary formal bits of RnRS cost it some adoptions at some opportunity junctures. For example, I was in charge of the extension/application language for a new workstation OO CASE system (this was when some other top workstation applications like AutoCAD and Interleaf were extensible in Lisp dialects), and Scheme was one of the candidates. I didn't know Scheme at the time, but was a new PL person, and Scheme appealed as a small and pretty clean Lisp with the power I wanted. Unfortunately, I got overruled by the Fellow technical cofounder of the company (otherwise a top engineer and in some ways role model :), who instead recommended a particularly nice string-based language that would be more friendly-looking to end users. (Unfortunately, that language was very poor for nontrivial data structure graphs like our application had, for starters, though it did have a neat spin on syntactic extension.) I think RnRS came across as "too academic", like "Holy crud! A function return is a call! OMG, we're all, like, cosmically connected, man... And a return is... a first class object?! WTH!" And the formal semantics -- which a PL grad student might interpret as rigor in underpinnings, could also just be intimidating and inaccessible to most practitioners, or give the impression of an impractical academic exercise -- that might've been the lethal finishing move, blocking earlier mainstream adoption.
-- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.