nma.arvydas.silanskas
2019-8-7 07:16:12

mostly misalignment of priorities between my view and racket’s team. I want to write production-ready code, they want to write educational and novice oriented framework


nma.arvydas.silanskas
2019-8-7 07:25:58

I mean is syntax wrt its purely visual appearance (not talking about practical implications, like power of macro’s because of s-exp here) hugely selling point? To me it seems people pick up languages because they want to write web servers, games, UI, etc in it;


nma.arvydas.silanskas
2019-8-7 07:26:34

I agree with comment on the HN thread, that if you don’t want to use racket now, you probably won’t want to use racket with new syntax either


yfangzhe
2019-8-7 07:34:59

Agree. Racket has much more wenderful things besides the surface s-exp syntax: macros, syntax/parse, typed/racket, #lang, drracket. If these things cannot attract people, why can a not alien infix syntax attract them?


tgbugs
2019-8-7 07:49:30

tgbugs
2019-8-7 07:51:05

related to production use of racket


tgbugs
2019-8-7 07:51:30

some people are interested in those kinds of questions


tgbugs
2019-8-7 07:51:59

but unfortunately they don’t tend to sit on tenure and promotion comittees


tgbugs
2019-8-7 07:52:43

but all in all I view this who thing as a giant strategic mistake


tgbugs
2019-8-7 07:53:18

and you can just see the bikeshedding


tgbugs
2019-8-7 07:53:23

that has ensued


tgbugs
2019-8-7 07:54:04

because it was broached long before there was in implementation


tgbugs
2019-8-7 07:54:16

call the whole thing off


tgbugs
2019-8-7 07:54:51

spend the next 5 years coming up with something that was not designed by comittee which is what the #lang mechanism actually enables


tgbugs
2019-8-7 07:55:00

maintain the status quo


tgbugs
2019-8-7 07:55:17

and then when you have some real data for #lang trapezoidal


tgbugs
2019-8-7 07:55:33

have a real conversation


tgbugs
2019-8-7 07:56:42

and allow people to focus on incremental changes that are needed to improve the runtime and tooling


tgbugs
2019-8-7 07:57:23

for serious use cases (not to imply that education isnt serious, but most courses try not to put lives at risk with their problem sets)


tgbugs
2019-8-7 07:58:05

but how the community is completely distracted by the bikeshed that is “things I dont like about programming languages, like, mutability”


tgbugs
2019-8-7 07:59:12

ah well, time to go back to shut up and hack


zhangnfelix
2019-8-7 08:24:17

@zhangnfelix has joined the channel


register
2019-8-7 08:29:22

@register has joined the channel


badkins
2019-8-7 14:17:25

@tgbugs I think you have some excellent points above. If #lang rhombus was handled in a similar way as other existing #lang’s, I doubt there would be any objections. But bringing it up in the context of Racket2 i.e. the successor to Racket is an entirely different thing.


blerner
2019-8-7 19:23:42

General package question: has anyone written a package that draws Venn diagrams, preferably as as pict, and preferably where I could add labels inside the regions?


soegaard2
2019-8-7 20:46:37

soegaard2
2019-8-7 20:46:56
#lang racket
(require metapict)

(def x  10)
(def -x (- x))

(set-curve-pict-size 800 800)

(with-window (window -x x -x x)
  (def r 5)
  (def s (/ r 1.8))
  (def -r (- r))

  (def c1 (circle (pt (- s) 0) r))
  (def c2 (circle (pt    s 0)  r))
  (def rev curve-reverse)

  ; we split the drawing window into a left and right part
  (def left  (rectangle (pt -x -x) (pt 0 x)))
  (def right (rectangle (pt  0 -x) (pt x x)))

  ; colors
  (def red  (color-med 0.2 "red"  "black"))
  (def blue (color-med 0.2 "blue" "black"))
  (def mag  (color-med 0.5 "red"  "blue"))

  (def font (make-similar-font (new-font)
                               #:size 40
                               #:face "Arial"))
  (text-color "white"
    (with-font font
      (draw
       ; filled areas
       (brushcolor mag                 (fill c1      c2))
       (brushcolor red  (clipped left  (fill c1 (rev c2))))
       (brushcolor blue (clipped right (fill c2 (rev c1))))
       ; outlines
       c1 c2
       ; labels
       (label-cnt "A"     (pt -r 0))
       (label-cnt "B"     (pt  r 0))
       (label-cnt "A ∩ B" (pt  0 0))))))

blerner
2019-8-7 21:43:50

Thanks


soegaard2
2019-8-7 22:03:29

Counts as my MetaPict pict of the day :wink:


ghoetker
2019-8-7 22:31:24

I concur strongly with @tgbugs. There is an interesting contrast with Elixir, which has recently announced that “As mentioned earlier, releases was the last planned feature for Elixir. We don’t have any major user-facing feature in the works nor planned.” As a very small time contributor to the Racket community, the choice between something stable and something in flux is a pretty clear one that pushes me away from Racket.

I’m also unconvinced Racket has the slack in its user base and community to navigate the transition successfully (witness, losing Greg H., who—along with Lexi—has been my most frequent guide when I hit questions). I also don’t think Racket has a unique value proposition that will make it—post change—any more attractive. Macros are great, ditto with #lang, but they are hardly unique and will be no more so if accompanied by infix notation. The unique value proposition I saw in Racket was precisely s-expressions and the relentless consistency they brought to the syntax and logic of a Racket program. Take them away and I’m better off with Elixir (might be Rust for others, whatever).

Regardless, I am dubious that Racket’s unique value propositions can carry it through a period of uncertainty in the face of more stable alternatives (compare to Python, which offered a huge established ecosystem and huge community, or Swift, which offered the lure of programming iThing apps).

So, my preferred route would be the same of @tgbugs: pull back and continue to improve Racket in its current form. Avoid the uncertainty. Let those so motivated design #lang trapezoidal that captures the improvements they feel are needed. They can bring it to the community, which will adopt it to the degree it serves them better. If it leads to a wholesale shift to #lang trapezoidal as the de facto default language in the ecosystem, the community can make the shift without the uncertainty—that is, it can move from a known to a known.

I recognise I have very little stake in Racket and have the luxury of not being responsible for steering the language or the community. So, I’ll offer the thoughts above to those who carry that burden, along with my best wishes and deep appreciation for the learning their work has allowed me to gain from Racket.


ghoetker
2019-8-7 22:31:44

Thanks also to the many wonderful, warm and helpful members of the community!


spdegabrielle
2019-8-7 22:53:58

@soegaard2 Is it possible to do the :racket-flat: in metapict?


soegaard2
2019-8-7 22:55:00

Why not!


soegaard2
2019-8-7 22:55:14

:racket-flat:


soegaard2
2019-8-7 22:55:41

A project for tomorrows picture.


badkins
2019-8-7 23:46:26

@sanchom you seem to continue to minimize others’ concerns. What you refer to as “a possible project” was what Matthew Flatt talked about as Racket2 i.e. the presumed successor to Racket complete with converting the official documentation to the new syntax, etc. Can you see why people who love #lang racket might be concerned about this? If not, maybe try going into some other language forum and suggest they switch their language’s syntax to s-expressions, and see what type of reaction you get :slightly_smiling_face:


badkins
2019-8-8 00:44:07

While I still have some concerns, I do think I’ll be able to continue to program in #lang racket for a very long time. It would’ve been nicer if the core team treated the new syntax language in a similar manner to Typed Racket, but as Matthew has stated, Racket exists because of research and is still funded in part by research, and they have a research itch to scratch. In the end, the #lang racket community will be what we make of it, and I’m hoping Greg will re-engage at some point & the other folks who have contributed to Racket continue.


badkins
2019-8-8 00:45:22

I’m just totally sold on Scheme at this point, and Racket is still the best Scheme implementation out there, so I don’t have much choice but to make a go of it :slightly_smiling_face:


tgbugs
2019-8-8 02:23:56

Just to clarify the scope of my original statement. I did not mean to imply that soliciting community feedback and input about pain points, design issues, future dreams and desires, etc, in advance of upcoming changes, is a mistake at all. In fact, thinking deviously for a moment, depending on how big a set of changes the team really wants to pull off, leading with “change the syntax” is quite an effective strategy for moving the goalposts (though I do not think that that is at all what anyone had in mind, for better or for worse). In point of fact, the general openness and engagement of the core team with the community is one of the reasons why this discussion appeared in a public venue at all, and it is profoundly unfortunate that it was done in such a way that it left room for people’s imaginations to run wild. I think that the Racket community is quite open to seriously engaging with and discussing radical ideas at a high technical level (#lang radical anyone?) but I think that there are certain fundamental aspects that can only be discussed with very careful framing, and that now we know that syntax is one of them.


tgbugs
2019-8-8 02:32:55

For example one very simple thing that might calm things down a bit would be a statement along the lines of “all RFCs that deal with systematic syntactical changes will only be considered if they are accompanied by a full working #lang othersyntax implementation and certain [to be specified] tooling” so that the burden of proof is placed on the proposer, and the community can ignore any other syntactic flights of fancy until there is a concrete implementation to consider.


tgbugs
2019-8-8 02:37:02

I suspect that this is more or less what the process is intended to be, and again, needing to qualify this and tiptoe around it is unfortunate, because people ought to be able to talk about their ideas and share them freely without fear.


notjack
2019-8-8 04:14:38

@tgbugs I think that’s a great idea. Would you consider writing an RFC in https://github.com/racket/racket2-rfcs to that effect?


samdphillips
2019-8-8 04:18:50

Was there an issue yet about writing the meta-RFC?


notjack
2019-8-8 04:20:42

I think there was, somewhere


notjack
2019-8-8 04:20:52

or it came up in other issues


notjack
2019-8-8 04:20:56

I forget


samdphillips
2019-8-8 04:21:26

Yeah I couldn’t remember if I read someone request something on the mailing list or here or in one of the Github issues


notjack
2019-8-8 04:21:36

¯_(ツ)_/¯


notjack
2019-8-8 04:22:16

the issues and the mailing list threads have so much discussion that they might as well be considered ephemeral


notjack
2019-8-8 04:22:39

opening pull requests with rfcs would be more durable


tgbugs
2019-8-8 04:24:33

happy to start a draft for a meta general process one, but it might be a couple of days, I also wonder whether that was the sort of thing the core team was trying to set up with guidance from/consultation with the Rust guys who have done this before, not that would stop me ^_^


notjack
2019-8-8 04:25:58

I think you ought to just go for it. As far as I can tell, there isn’t a secret process RFC being cooked up by the core team and they’re figuring this out as they go just as much as everyone else is (and they purposefully wanted to do things that way).


notjack
2019-8-8 04:26:17

but that’s just my guess


tgbugs
2019-8-8 04:28:24

my take from a few of Matthew’s emails to the list was that they had the Rust talk open Racketcon as a way to set the stage and were hoping to have the process a bit more worked out before ramping up


samdphillips
2019-8-8 04:34:45

My read on it was to have more community involvement. So if someone from the community hashes out a workable process and a consensus (or whatever) sign on to it I think it would be a good.


tgbugs
2019-8-8 04:35:34

indeed


notjack
2019-8-8 06:34:46

Playing around with something like this: > (define (real<=> x y) (cond [(< x y) '<] [(= x y) '=] [else '>])) > (transduce (list 1 2 3 2 1 2 3) (filtering-on (increasing? real<=>)) #:into into-list) (list 1 2 3 2 3) > (transduce (list 1 2 3 2 1 2 3) (taking-while-on (increasing? real<=>)) #:into into-list) (list 1 2 3) > (transduce (list 1 2 3 2 1 2 3) (dropping-while-on (increasing? real<=>)) #:into into-list) (list 2 1 2 3)