> 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.

Reply via email to