I think you want to add `#:property prop:custom-print-quotable 'never` to that struct declaration, and then it will behave as you wanted.
Sam On Thu, Mar 4, 2021 at 11:44 AM Dimaugh Silvestris <[email protected]> wrote: > > I have a struct defined as: > (struct ugen sc.unit (name rate inputs) > #:methods gen:custom-write > [(define write-proc > (make-constructor-style-printer > [λ (x) (let [(rate (ugen-rate x)) > (name (symbol-append (ugen-name x) ':))] > (cond [(eq? rate 'ar) name] > [else (symbol-append > name rate)]))] > [λ (x) (ugen-inputs x)]))] #:transparent) > > So that (ugen 'sinosc 'ar (1 2)) prints as (sinosc: 1 2), which incidentally > it's the same as the function call that creates that value, that is: (sinosc: > 3 4) creates the struct instance (ugen 'sinosc 'ar (3 4)). * > > The problem is, within a list it prints like '(#<sinosc:: 1 2>), which is > quite ugly. > > * I don't know if this is a smart choice. I'm building a SuperCollider > client, and in SuperCollider there's hundreds of ugens (unit generators, such > as oscillators, filters, etc). > Because there's hundreds of them, I thought it might be heavy on memory or > cpu to declare a specific struct for each one of them; so I choose instead to > declare only constructors that build different instances of the ugen struct. > > -- > 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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/racket-users/56b85a49-2b64-465a-a58d-3b758aa823c5n%40googlegroups.com. -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/CAK%3DHD%2Bb_SSFcT35ohW1TeiDPpcHXiX8CN%3DNNseaRCz_nbSWcLw%40mail.gmail.com.

