Yasser Hussain wrote on 10/1/18 5:31 AM:
Unfortunately, I don't remember which DrRacket version, and which exact `#lang` line I was using. But I specifically remember that "load" worked with some earlier version of racket.

Hi, Yasser.  The reason I asked those questions offline was that, after checking my original SICP PLaneT package with Racket 6.12, I was no longer assuming that `load` ever worked with the SICP support, and perhaps `load` wasn't necessary for the current SICP support.  I wanted a rapid path to determining whether a regression happened, and where, and you potentially had the best information for doing that quickly and easily.  Then we could report back to the much broader Racket email list with the resolution.

Problem with using `require` is that I'll have to use "#lang racket" with it, which will prevent me from using standard scheme procedures like `set-cdr!`, etc.

The SICP support is only intended to be a convenience for using the very important SICP textbook, to try maximize SICP's accessibility to contemporary students (who might not be able to run MIT Scheme, for whatever reason).  Please let me try to address your goals...

If you really just want to use classics like `set-cdr!` in the Racket universe or just with Racket tools, you might like to try Racket's `#lang r5rs`.

If you want the tons of benefits of evolved Racket, but also want mutable pairs right now, you can have that with Racket (though, be aware that a mutable pair isn't a subtype of pair in Racket, so all pair/list-related code must be aware of this).  There aren't many other non-backward-compatible differences in Racket, and the change to mutability of pairs is the only painful one I recall, in ~18 years of contributing to Racket,

A third possibility that I'd like to suggest is to consider trying to write idiomatic Racket, as an exercise.  If, for example, Racket discourages mutable pairs, try to write your code without that, and see where it pushes you (e.g., more towards functional programming, or strengthening your code in some ways), and then decide what you think about that.  (Personally, I only had mutable pairs pain with the very earliest Scheme code I wrote; in later code, I was already usually treating pairs as immutable, and minimizing mutation in general.)

BTW, since you said "standard", I very much appreciate sentiments in favor of standards.  Incidentally, I'm not part of the benevolent cabal; just a bottom-tier contributor. :)  In this niche of innovative language platforms, I suspect that Racket overall would be consistent with your ultimate goals, even if it's in some ways not "standard" -- it's much more than any standard, and somewhat different.  (Personally, if you're thinking of it as a Scheme implementation, despite all their efforts to be clear that it's not Scheme... I've probably used most of the Schemes and descendants, and it's nice to know that I can always use other Scheme implementation/descendants.  Probably my favorite one other than Racket is Gambit by Marc Feeley.  I'm also fond of some of the others, each with their own strengths, and they also remain in my pocket for possibly using later.  I also like that I can make my own Racket `#lang` dialect at any time, in such a way that I maintain good interoperation with, and contribution to, the rest of the Racket world.)

Is it possible for me to take a look at the source code and try to figure out why "load" doesn't work, and possible try to get it to work? Could you provide some pointers? :)

Yes.  Ways include:

1. To familiarize with the Racket package catalog, if you go to that package catalog URL I gave, there's a "Code" button that, in this case, goes to a GitHub repo, where you can do go normal Git and GitHub things.

2. Racket packages themselves actually usually include the source for all of code+test+documentation.  (There's an even more lightweight source-centric thing I want to do, but haven't done yet.)  I'm not sure what's the best starting point for your needs, but here's two:

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.

Reply via email to