@Bil Wow, thanks for these snippets. I'm not really familiar yet with s7 let, will have these in mind. (openlet is still something I haven't touched, many possibilities with it - though could be "dangerous" in the sense that things are happening without being able to tell just by the code)
@Iaian Thanks :) It's funny reading your clojure stories, cause I went though the same route more or less. And looking forward to sharing ideas etc, glad that you got the masters and you will be working with S7! Loving the community so far, I see plenty of enthusiasm around S7, and the support from Bil is great. Christos On Mon, 3 Aug 2020 at 05:13, Iain Duncan <[email protected]> wrote: > Christos, I'm really looking forward to checking this out and using it. > I'd love to get it working on Max too in their open GL context. I was out > of town all day so have not had a chance to watch this, but I have checked > out the repo and I'm really glad you're doing this work and sharing it. > > That would have been me talking about Clojure I expect, and I agree > wholeheartedly that something similar to Clojure's name-spacing and module > system would be a great addition. I think an easy to use module/package > system makes a massive difference to newbie users and is a really big part > of Chicken's success as an accessible but real world usable scheme. To be > honest, I think from what I've seen that there isn't going to be much for > me to contribute there but I'll happily test and document any ideas for > such a thing, and contribute in whatever way I can! > > On the topic of Clojure, I wound up here on a circuitous route that > started with me discovering Clojure as my lisp gateway drug, and then > hunting for something similar for music. I did find things like Overtone > (Clojure front end to Super Collider) and Pink (Steven Yi's Clojure music > platform), and I got ClojureScript working in Max with the node.script > object, but ultimately came to the conclusion that the JVM was just a deal > breaker and that the node environment didn't give me enough. S7 has really > been a fantastic fit for what I was looking for with pretty much everything > I liked about Clojure but dead easy to use in a performance critical > environment. I'm certain we will attract more people from the same place if > we add documentation and examples like this that help raise awareness in > the non-academic computer music world and make it easy to test the waters. > > So yeah, that's my long-winded Canadian way of saying awesome work, and > great to have you here! :-) > iain > > On Sun, Aug 2, 2020 at 3:25 PM <[email protected]> wrote: > >> I think s7's let is very similar to clojure's namespace. >> (inlet 'x 1) creates a namespace with 'x bound >> to 1, and (eval '(+ x 1) (inlet 'x 1)) is 2. Unless >> otherwise specified, the "outlet" is the rootlet, so >> to make an instance (so to speak) of the class >> (inlet 'x 1), you could: >> >> (let ((class (inlet 'x 1))) >> (let ((instance (inlet 'y 2))) >> (set! (outlet instance) class) >> (with-let instance >> (+ x y)))) >> >> (let ((instance (inlet 'floor (lambda (x) 3.14)))) >> (with-let instance (floor 1.5))) >> >> By using openlet, these lets can specialize built-in >> functions (see mockery.scm) without having to change >> to the instance namespace via with-let: >> >> (let ((instance (inlet 'object->string (lambda (obj . rest) "hi")))) >> (openlet instance) >> (object->string instance)) >> >> The hierarchy is the outlet chain. Locals can be added >> with varlet, removed with cutlet, mapped over etc. >> Another way to set up the chain is sublet: >> >> (let ((class (inlet 'x 1))) >> (with-let (sublet class 'y 2) ; class=outlet + y=2 locally >> (+ x y))) >> >> _______________________________________________ >> Cmdist mailing list >> [email protected] >> https://cm-mail.stanford.edu/mailman/listinfo/cmdist >> > _______________________________________________ > Cmdist mailing list > [email protected] > https://cm-mail.stanford.edu/mailman/listinfo/cmdist >
_______________________________________________ Cmdist mailing list [email protected] https://cm-mail.stanford.edu/mailman/listinfo/cmdist
