
The community is the most important thing. I think the Racket community is overwhelmingly welcoming, tolerant, interested in new ideas, and most importantly, willing to answer questions from a dummy like me. :grin:
In addition to the other reasons above I also prefer the Racket REPL.

I would say that parts I like the most about common lisp versus Racket are the condition system and image based development.
I really like the flexibility and power that conditions give you compared to exceptions although Racket’s exceptions are already flexible compared to the more traditional exception model of Java or C#.
While common lisp’s image based development is really nice (the same reason why I enjoyed playing with Pharo and Self) and gives me a flavor of dynamism that’s not found in Racket, experimenting with it has made me realize there are caveats associated with it and I’ve come to appreciate advantages of source-code based development. I frequently find myself wondering if it’s possible to combine both the advantages of image and source-code based dev in a sensible way.

@emiliecmitchell has joined the channel

Has anyone tried to implement something like conditions and restarts in a Scheme or Racket? I only have a shallow armchair understanding of the CL condition system but waves hands it seems like it would boil down to struct
s and continuations waves hands more urgently.

/me
looks forward to learning how much he is glossing over, how badly

Yeah that sounds about right. IIRC there would need to be an “operator” that replaced the “exceptional condition” with a value and continued from where the exception was signalled and an operator that truncated to a prompt/exception handler. I don’t think it would work with the out of the box Racket exceptions but a layer could maybe be built to handle those “native” exceptions.

(also probably painfully glossing something over)

oh or make existing exceptions non-resumable

In pretty-print-size-hook
, what does “the value should be an integer specifying the length of the printed value in characters” mean? What is the value I am intercepting is printed in multiple lines?

You mean what if?

Perhaps you can use make-tentative-pretty-print-output-port
to compute the length? I think it will be horribly inefficient though.

I am actually printing some multi-line stuff. But I don’t get what “the size” mean. Is it the width? Or is it the total length of characters needed (in the buffer)?

I think it’s the latter

You can grep the Racket repo for pretty-print-size-hook
. There are two uses. One in the expander and another as a test.

It seems to be string-length-y

Thanks! I guess it’s not intended to be breakable..

Newlines don’t interact with string-snip% well in DrRacket REPL :(

Just saw your tweet. When it works it’s gonna be really great :slightly_smiling_face:

Getting the folded S-expressions is working! But expanding it places everything in a single line. I’m wondering how the student languages keep all the indentation and the linebreaks.

Have fun with auto term collapsing in traces
! https://gist.github.com/shhyou/fc0ab9249ba5b478adffbb3743bdac96