[CM] questions about adding functionality on top of S7

Iain Duncan iainduncanlists at gmail.com
Thu Aug 6 07:31:30 PDT 2020


Hi Bill (and anyone interested), I've been developing a personal
convenience layer over top of S7 to add out of the box beginner and high
level functionality to S7 for users of Scheme for Max, with the goal of
ensuring that the experience for brand new users is as good as possible,
but also so that the s4m object can be used purely as a message handler
without having to add any code as well (i.e. for running one liners as max
messages, essentially). These are mostly functions lifted from bigger
schemes, and a few that are unique helpers but I find myself using all the
time in Max so have them in my personal library. I feel like some are
things a user should need to opt in to, but it would be nice if others were
"just there" for my (future..) users.

What I'm curious about is how you (Bill) decide what goes into the core S7
file and what should be loaded as extra files, For example, I want to add
"first" and "rest" as aliases for car and cdr, as these are common in CL,
Clojure, and Elixir, and make code much more readable for brand new lispers
(IMHO). I could do this in C in my Max module, but then they are not
available to people who want to use the same extension to S7 outside of Max
(ie say in webassembly, woot!). I could make aliases at the Scheme level in
an opt-in module, but then that adds an extra function call.... but maybe
the engine is smart enough that this doesn't matter?  Or would you
entertain having the first and rest aliases in core S7?  I totally
understand if you want to keep core as small as possible and additions
should always be opt-in if that's your philosophy.

Similarly, I am wondering about square brackets. I couldn't figure out from
the docs and repl what the S7 philosophy is on these. Racket makes them
interchangeable with parens so they can be used for extra readability (i.e.
enclosing cond clauses). Clojure makes them mean vectors. Curious whether
they have a role in S7. I tried scanning through s7.html but there were 140
square parens from the C code.. haha

I'd welcome your thoughts on this sort of thing so that I can so that I can
do this in the way most helpful to users, but also least
disruptive/irritating to you and core S7.

thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cm-mail.stanford.edu/pipermail/cmdist/attachments/20200806/22a92f0e/attachment.html>


More information about the Cmdist mailing list