> On May 11, 2019, at 8:41 PM, Josh Rubin <jlru...@gmail.com> wrote: > > > This is going to be easier than I thought. Nobody told me (mostly-equal? > Racket Scheme) > > Racket seems to be a superset of the Scheme I know, with more restrictions on > mutation. I was conservative about mutations. My worst habit was using > "reverse!" and "append!". They are used in stereotypical ways or hidden > behind a layer of data abstraction, so they won't cause trouble. I need to > box some stuff. Many of the things I used macros for are now natively > supported. Old style macros are still there until I learn the shiny new > hygienic macros. > > I have to relearn the programming environment - editing, debugging, and > packaging. I want to know what is underneath the surface. As someone told me, > I really should learn git.
Josh, as the old guy on the Racket team, welcome to our world. I am so old, I was almost on the Texas Instrument Scheme team :) As you discovered Racket is a descendant of Scheme. I’d like to use the phrase it is Scheme’s heir but that would mean Scheme is daed, but the species of cockroach doesn't die out. As several people mentioned, you want to — port some sample programs from your 1980s TI Scheme days to Racket — .. other than the removal of mutable lists that will work. Let me recommend a second step. Find some of the modern features of Racket to make the code Racket-y. That’s what we call it when code uses the most basic Racket ideas: — https://docs.racket-lang.org/style/index.html?q=Style <https://docs.racket-lang.org/style/index.html?q=Style> — use modules to split your code into comprehensive units, use nested defines, mingle them with expressions — if you touched CLOS, we have a class system with mixins — trade map for for/list and friends (https://docs.racket-lang.org/reference/for.html?q=for%2Flist <https://docs.racket-lang.org/reference/for.html?q=for/list>); loops that don’t need set! The third step would be to design a language that makes your programs “just run”, because Racket’s major trick is “language-oriented programming”. One step on the way to #lang’s is to re-learn macros. Texas Instruments dabbled with Kohlbecker’s hygienic macros but don’t be confused about two different things that got conflated back then: — macros that get lexical scope right for you while you don’t have to think about most of the time — macros that use pattern-matching facilities to check basic properties of the surface Once you have basic macros down, you will climb the hill to macro design patterns. But I am sure we will hear from you before that, and as you can tell, people will help out — Matthias -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/07B9D909-51A0-4CE2-8690-C28A2D5AA0E2%40felleisen.org. For more options, visit https://groups.google.com/d/optout.