Learning racket/scheme - how do you get to the practicing stage?

I think that's a good approach (even though I started with Racket before looking that much into R5RS). But my reasoning is that if R5RS in itself is a productive language but (much) smaller than Racket, it's probably a good basis to get the big picture.

I'd like to add that pattern matching has both relative simple patterns and advanced ones which I find rather hard to understand. Also, in my opinion Additional Matching Forms can come later. :slight_smile:

This is also what I had hoped to find in the Racket Guide. My wish is that the Guide contained what a user needs to get productive in the language for not too complicated programs. That said, I just checked the contents of the Racket Guide and, thinking about the presumably advanced stuff that we discussed in this thread, I found some contents where I wonder if they should be in the Guide:

  • " 5.7 Prefab Structure Types"
  • The "planet" stuff in "6.3 Module Paths". I guess this is mostly there for historic reasons.
  • " 6.8 Protected Exports"
  • Maybe parts of " 7 Contracts"?
  • " 10.2 Prompts and Aborts"
  • " 10.3 Continuations"
  • Although "11 Iterations and Comprehensions" mentions sequences, it doesn't explain what a "sequence" means, particularly, that a sequence may be lazily evaluated.
  • "11.5 for/and and for/or"
  • "11.6 for/first and for/last". Of course, the four for forms can be useful, but to me they seem a bit too special to be in the introduction.
  • Parts of "13 Classes and Objects". I had started to read this in the past, but further down (maybe from "Mixins") I really wondered how important these sections were. I think the OOP chapter in the Guide should contain what's needed to start with the GUI system, but I don't know how much more. (By the way, should the Racket Guide discuss the GUI system, maybe basics?)
  • "14 Units (Components)". I think someone in the Racket Slack said that units weren't that important anymore because they were mostly superseded by the module system.
  • Parts or all of "15 Reflection and Dynamic Evaluation"
  • Parts of "16 Macros". I can't be more specific because I know too little about macros. :slight_smile:
  • "17 Creating Languages". I understand the motivation to include this chapter since Racket prides itself as the language for language-oriented programming (or something along these lines :wink: ), but I suppose this is a rather advanced concept.
  • Maybe at some point the BC stuff in "19 Performance" should be removed.
  • I'm unsure about "20 Parallelism". I agree all this should be documented somewhere - but in the Racket Guide?

Again, I'm just wondering about these sections. I can't judge how important these actually are.

Somewhat related: The Oxford Advanced Learners Dictionary and maybe other online dictionaries mark words of a "key" vocabulary with a symbol. For example, the entry for person has such a "key" icon. I don't suggest to add such icons to "key" functions/forms in the Racket Reference and actually don't even have an idea what a good way for such annotations would be without getting visually noisy and distracting. But maybe someone else is more inspired than I am? :smiley:

1 Like