On Tuesday, July 16, 2019 at 8:18:24 PM UTC-4, Alexis King wrote: > > On Jul 16, 2019, at 15:32, rocketnia <rok...@gmail.com <javascript:>> > wrote: > > I find it worrying that racket2 would be kicked off with infix syntax > (something which I think of as an unnecessary sticking point in the way of > prospective macro writers and language designers, and hence a move *toward* > elitism *as opposed to* welcoming everyone) > > > I think this fear is natural and understandable, but I want to take a > moment and urge everyone to think bigger than that, even if we as > programmers are often trained not to. Do not think “because we are moving > to a syntax for which macros are harder to express, the language we create > will have an inferior or more difficult to use macro system.” If we were > setting out to responsibly engineer a new language on a deadline, that > thought would be right on the money… but we’re not doing that. Racket is a > research language, from an ever-growing community full of very smart people > who have produced lots of quite significant research results. They have > taken problems that used to seem untenable and made them perfectly > achievable (and indeed, often *achieved!*). > > So instead of thinking about all the ways Matthew’s proposed syntax is a > compromise that necessarily comes with certain downsides, think of it as a > challenge: how do we take all the lovely things we’ve come to enjoy and > take for granted in #lang racket and do them in a language with a less > regular syntactic structure? How do we make writing great macros as easy in > #lang racket2 as it already is in #lang racket? That means figuring out > both what the primitives are *and* what the DSLs look like—syntax/parse > did not naturally follow from hygiene and syntax objects, as much as it > sometimes feels that way. I am not saying it is easy, and I’m not saying > it’s even guaranteed to eventually succeed: perhaps we will fail. But I > don’t think we have any reason to suspect we will just yet. > > It can’t start by being everything we want it to be, of course; things > take time. I just think that thinking about things as such a stark > dichotomy is disingenuous and self-defeating. Obviously, we should not aim > to become more elitist, on any axes, so let’s aim not to be. This is time > for pie-in-the-sky brainstorming, not risk management. Having existing > research to build on helps, but even that isn’t required. So although I > know firsthand how hard it can be as an software engineer to think about > what we want without worrying about how we can build it, let’s be > aspirational and exploratory for a bit. > > Alexis > > P.S. If your qualm with moving from s-expressions is one of aesthetics, > not ease or ability, I admit I can’t argue with you there. But I don’t > imagine those kinds of discussions are likely to go anywhere productive, > anyway—see Wadler’s law. >
Some great points Alexis. I should've learned by now to be wary of my knee-jerk reactions :) My initial reaction to the idea that Racket2 *might* have an infix syntax was to feel quite unsettled! To be clear, I like the idea of Racket2 being able to break backward compatibility if it makes it easier to move forward, but adding syntax seems to create an identity crisis for a lisp. Sweeping syntax changes for a language that already has syntax is one thing, but introducing syntax to a lisp is on another level IMO. After a ten year search for a new programming language (ending Nov 2018), in which I heavily weighted both effectiveness/productivity & joy in programming, I chose Racket. In my 8 months of full time Racket development, I don't think a week has gone by where I haven't been pleasantly surprised by something in Racket. Racket School just piled on many more reasons why I was thrilled to be able to program in Racket full time. So the timing of the proposal, from a purely *personal* perspective, was poor - from the peak of (possibly) inflated expectations, to the trough of disillusionment! I suppose it's possible that my love for parens came primarily from seeing that s-expressions made code transformations easier for me (although, I also like other aspects of essentially working with an abstract syntax tree). And I admit a weakness in being able to imagine a combination of infix syntax w/ a new macro system that's as nice to use as the current Racket way. I do remember liking Haskell's syntax when I spent time with it during my search, and I *think* I recall feeling that I missed some things (e.g. list comprehensions) about that syntax when I chose Racket, but that what the parens allowed for was worth it, so *maybe* if we come up with an elegant syntax that was no more difficult for language extension than what we have now, I might like it. At this point, I'm a little less unsettled about a possible new syntax. I (naively?) think the Racket core team & wider community probably have a fairly large intersection of shared aesthetics that values elegance, expressive power, conciseness, ease of language extension, etc. I lean strongly toward minimalism, and, as an example, despite Haskell being a huge language from one perspective, it does allow for elegant and concise code. I'm skeptical of the value of an infix syntax for reaching the stated goal, but as a newcomer, I feel that the folks who have invested years of their lives in developing Racket should certainly feel free to ask, and try to answer, the question. Having said that, I can almost assure you that if this current discussion was happening when I was considering Racket initially, I would not have felt comfortable choosing it (possibly for irrational reasons), and I think it's clear that this type of change will result in both the loss of existing users and the gain of new users, and it's not at all clear to me which will be greater. However, I can't *unsee* what I've seen with language oriented programming (and the downsides to running on the JVM are too great ;), so I'm happily "stuck" for the time being :) Brian Adkins -- 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 racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/93157f78-446c-4bd7-a5c4-c48e7e014621%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.