Wow, so great to hear the a SuperCollider client in Racket is on the horizon:)
-- Yury Bulka https://mamot.fr/@setthemfree #NotOnFacebook Dimaugh Silvestris <[email protected]> writes: > 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/87tupqelxo.fsf%40privacyrequired.com.

