winny
2019-8-6 07:02:08

I just misread your message, and looked at your code again. I see what you were getting at, Yes this looks pretty great, avoiding Fixnums =)


soegaard2
2019-8-6 10:30:11

Just discovered that racket-mode supports “check syntax”. Thanks @greg!


soegaard2
2019-8-6 12:25:15

Is there a place to see the status of: http://pkgs.racket-lang.org\|pkgs.racket-lang.org ?


winny
2019-8-6 13:47:07

I am also wondering about this. I’m not quite sure to know when a given package is rebuilt. My best bet to monitor rebuilds is to just check back in a day or two.


soegaard2
2019-8-6 13:49:02

If you click to the left of “Package” (in the blank space) you can sort the packages, so the new ones are on top: https://pkgs.racket-lang.org/


soegaard2
2019-8-6 13:49:11

It seems all newly updated packages fail.


spdegabrielle
2019-8-6 13:52:10

The note on the bottom: Questions? Comments? Bugs? Email or .


spdegabrielle
2019-8-6 13:53:32

@jeapostrophe u on slack?


metadave
2019-8-6 14:01:37

@metadave has joined the channel


nma.arvydas.silanskas
2019-8-6 15:22:56

is it possible to know how many places refer to a variable? I’m curious if it’s possible to have such optimization — have standard functional update (like map / struct-copy) if the data structure is refered to from multiple places; but use in-place mutation (like vector-set!) if the data structure is refered to from single place only.


nma.arvydas.silanskas
2019-8-6 15:23:46

so in effect from user side it’s still functionally transparent, but with possibility of performance boost


nbtheduke
2019-8-6 16:40:38

@nbtheduke has joined the channel


samdphillips
2019-8-6 17:09:08

I was using Atom, but switched to vscode a couple months ago, because I was looking for better langserver support. It does feel a bit snappier than Atom and I feel like it handles “projects” better


spdegabrielle
2019-8-6 17:12:29

I don’t want to use VScode - I just want DrRacket to look as good without sacrificing usability for new users


samdphillips
2019-8-6 18:16:34

I agree. If DrRacket was more general and could deal with Java, Python, etc. I would use it more. But I don’t think that is necessarily where DrRacket should go.


soegaard2
2019-8-6 18:18:49

For polyglots it makes more sense to use a racket-mode in the editor of choice.


soegaard2
2019-8-6 18:19:24

The popularity of VS Code suggests it would be a good move to make a proper racket-mode for it.


spdegabrielle
2019-8-6 18:19:49

I’m confused - does racket have a language server like rust that emacs (and other) editors can call?


soegaard2
2019-8-6 18:21:08

There are two on the package server. I haven’t tried them. But Racket is not listed as a supported language on the VS Code page. https://pkgd.racket-lang.org/pkgn/package/racket-language-server https://pkgd.racket-lang.org/pkgn/package/racket-langserver


samdphillips
2019-8-6 18:41:47

I tried it with Atom a while back. I haven’t tried it in VScode yet.


samdphillips
2019-8-6 18:41:57

@jeapostrophe is the maintainer iirc


samdphillips
2019-8-6 18:42:14

er is a maintainer


samdphillips
2019-8-6 18:48:03

the racket-langserver package cleverly reuses the existing DrRacket apis to do it’s work


spdegabrielle
2019-8-6 19:04:48

https://pkgs.racket-lang.org/package/racket-language-server seems to be the one associated with theia-ide


spdegabrielle
2019-8-6 19:06:50

The Microsoft ‘language server protocol’ is never going to provide the functionality that DrRacket offers


soegaard2
2019-8-6 19:08:19

No it is just a baseline. But I believe it is extensible in the in the same manner as Emacs.


spdegabrielle
2019-8-6 19:10:40

I like the arrows. They really help when spelunking through other people’s code..


soegaard2
2019-8-6 19:12:48

I like the arrows too. But check-syntax in racket-mode in Emacs does the same job. It changes the background color of the identifiers instead of drawing arrows.


spdegabrielle
2019-8-6 19:14:44

Maybe a DrRacket extension to support LSP? I’m mostly interested in a path to DrRacket looking as good as sonicPi or VScode - DrRacket is the ‘face’ of Racket.


samth
2019-8-6 19:35:41

That was probably me. Let me know if you’ll be around campus.


samth
2019-8-6 19:35:50

What sort of class are you looking to take?


samth
2019-8-6 19:38:15

I chose that picture on Shutterstock.


samth
2019-8-6 19:39:43

I have not measured that recently. I’ll try it out.


samth
2019-8-6 19:43:37

Most of that is packages that have bad metadata being treated as permanently “new”


samth
2019-8-6 19:43:44

Which should probably be changed


samth
2019-8-6 20:03:37

Yes, it’s still that bad.


soegaard2
2019-8-6 20:04:24

Okay. Thanks for checking.


soegaard2
2019-8-6 20:05:06

Is it bad only for the general array case - or also for matrices?


samth
2019-8-6 20:05:45

Probably both


charles.cearl
2019-8-6 21:23:20

@charles.cearl has joined the channel



samdphillips
2019-8-6 22:19:34

So much of those comments make it sound like Matthew murdered Greg.

“The Lisp community will feel the loss of Greg Hendershott.”


tgbugs
2019-8-7 00:45:42

those mailing list threads likely claimed more than a few members of the community :confused:


plragde
2019-8-7 00:47:26

I’m a little surprised at the general level of angst… and I consider myself a moderately sensitive person.


tgbugs
2019-8-7 00:48:49

I mean, it was sort of like ripping the roof off the house for someone who finally felt at home having found the nice, regular, reasonable world of s-exps


tgbugs
2019-8-7 00:50:26

or at least the imagined threat of such a thing


tgbugs
2019-8-7 00:50:37

which is inevitably far worse than any reality


plragde
2019-8-7 00:51:24

Well I am one of those people. But I also have wandered away and spent time focussing on Haskell, OCaml, Coq, and Agda, among others. And I’ve watched Racket evolve, not always in ways that I would necessarily have chosen, but that’s the nature of things done by people other than me!


notjack
2019-8-7 00:52:32

it seemed like a lot of people were asking “is everything I’m used to going to go away?”


tgbugs
2019-8-7 00:54:34

the way I look at it at this point is that any technology that will satisfy LOP will probably have to be good enough that I can convert everything into s-exp syntax anyway, which is probably ultimately a win, if you can figure out how to create ‘virtual’ source lines


notjack
2019-8-7 00:56:01

@tgbugs out of curiosity, what do you imagine you’d be converting? source code of libraries you use? code written by people working on a project with you? example code in docs? all of the above, plus more?


alexknauth
2019-8-7 00:57:02

I’m not optimistic about Honu-style macros for non-s-expression syntax, or any system where “converting into s-exp syntax” would require running the macros to reveal the tree structure, including arbitrary code


tgbugs
2019-8-7 00:58:10

barring Alex’s concerns, literally everything, of course you could write a horrible infix expression that expanded to a massive sexp


tgbugs
2019-8-7 00:59:13

but I don’t think we know the frequency with which those kinds of macros are actually used/written


alexknauth
2019-8-7 00:59:20

I am optimistic however that some niceties such as infix without a precedence system, such as what Pyret does, can be added in a way that wouldn’t require running the macros to convert to s-exp syntax


plragde
2019-8-7 01:00:02

Other languages have metaprogramming - albeit not as convenient as Racket’s. I don’t see the harm in trying to push the boundaries of what is currently possible.


tgbugs
2019-8-7 01:00:20

> explicit is better than implicit > has operator precedence rules > just python things


notjack
2019-8-7 01:00:57

@tgbugs if there was a racket package you wanted to use, and the source was implemented in #lang rhombus (or whatever racket2 ends up being called), would you clone the repo and convert the source code of the package to #lang racket before using it?


tgbugs
2019-8-7 01:01:51

@sanchom yes, the reason why I’m not so worried at the moment is because the core team seems to have set very high expectations for what acceptable would be


tgbugs
2019-8-7 01:03:03

@notjack my hope would be that there would be something like the stepper or the expander that could create a virtual view which I could edit and then run backwards back into the original rhombus with my changes


tgbugs
2019-8-7 01:03:40

if it ends up being honu style, then that would seem to imply inverse enforstation or something like that


tgbugs
2019-8-7 01:03:48

so, perhaps a pipedream


tgbugs
2019-8-7 01:05:10

but if the threat of converting all the documentation to some future trapezoidal language is going to be made real, then I interpret that as the ability to do full roundtrips in both directions


tgbugs
2019-8-7 01:06:35

the implication being that if I can figure out how to write #lang python using trapezoidal technology, then I never have to look at python again and can port my whole codebase in one shot


tgbugs
2019-8-7 01:06:54

again, pipedream


notjack
2019-8-7 01:11:11

@tgbugs If third party library docs were easily toggle-able, but third party source code took more work to convert between syntaxes, how would you feel about third party packages implemented in non-s-expression syntaxes? Like say we had a way for the racket package system to act as a mirror of package systems from other language ecosystems, so you could use raco pkg to install haskell libraries from Hackage and use them with a #lang haskell (and do similar things for other languages / package systems like python + PyPI or javascript + npm). Would you feel uncomfortable with transitive dependencies on libraries implemented in these languages?


tgbugs
2019-8-7 01:14:16

I tend to be conservative when it comes to dependencies, especially when it comes to depending on another language that I am not proficient at, I will do it, but if I can’t easily fix it myself, then it is quite a bit less useful


tgbugs
2019-8-7 01:14:42

now, having everything operating under the same runtime reduces the cost of that by 50%


tgbugs
2019-8-7 01:14:51

(or something like that)


tgbugs
2019-8-7 01:15:35

however I worry that in the core it can lead to a schism in who is willing to contribute to what


tgbugs
2019-8-7 01:17:30

I have spent a lot of unhappy time working with rdf, and the serialization format and tooling matters a whole lot, and leads to major barries to entry and contribution


tgbugs
2019-8-7 01:18:00

that is a kind of massive exaggeration of the potential situation


tgbugs
2019-8-7 01:19:43

silly things like “I can’t use paredit in this file” or “in order to use paredit in this file I or someone needs to write a bunch of code” and be major stumbling blocks for existing users


tgbugs
2019-8-7 01:20:26

the threat of having to change a habit can often force people to search for a more stable place where they won’t have to change them in the future


notjack
2019-8-7 01:21:58

there’s definitely a big tooling gulf between “you can write code in any language” and “writing code in any language isn’t torturous”


notjack
2019-8-7 01:25:12

Do you have any suggestions for a list of minimum tooling requirements for a surface syntax? Such as “must be able to use paredit or something paredit-like”.


tgbugs
2019-8-7 01:25:56

I do, I think I mentioned them in passing in one of the github issues


tgbugs
2019-8-7 01:26:17

but they essentially amount to being able to locally apply a rule to select the equivalent of an s-expression


tgbugs
2019-8-7 01:26:38

meaning that I don’t have to resolve identifiers or expand macros


tgbugs
2019-8-7 01:26:43

to figure out where boundaries are


tgbugs
2019-8-7 01:28:05

‘local’ meaning “if I plop down a cursor anywhere in the file I only need to invoke read to know where forms begin an end”


notjack
2019-8-7 01:28:12

the reason being that if you had to resolve identifiers then a source file that doesn’t compile would not be structurally editable, you mean?


tgbugs
2019-8-7 01:28:20

exactly


tgbugs
2019-8-7 01:28:49

robustness to bad/incorrect/invalid state of the surface syntax is critical


notjack
2019-8-7 01:29:38

so, “must be able to use paredit-like editing on files with compilation errors” vs just being able to use paredit-like editing


tgbugs
2019-8-7 01:29:52

its like, imagine trying to spread peanutbutter if the coefficient of friction were to change depending on the exact angle of the knife and the temperature and the speed


tgbugs
2019-8-7 01:30:09

ya, paredit like is a fair charachterization


tgbugs
2019-8-7 01:30:58

though if you include slurp and barf, I have this thought that you basically wind up back at s-expressions


notjack
2019-8-7 01:35:13

I’ve wondered for a while though if there’s ways for macros to communicate that syntax errors have a “blast radius” and only affect some subtree of syntax or some small part of the file, so compilation can make more progress after encountering one error. That way things like type checkers could raise multiple independent syntax errors and you wouldn’t have to fix them one at a time, recompiling between each one. I think if we focus on the constraint of “structural editing with broken files” but don’t assume that means a Honu-like approach to parsing and binding is impossible, we might develop some really interesting approaches to dealing with macros and broken files. Which could even improve plain old’ typed racket, rather than just racket2.


tgbugs
2019-8-7 01:37:22

definitely possible, I have been playing with something using syntax/warnings for things it was probably never intended for to produce something similar for my own work


tgbugs
2019-8-7 01:38:03

also effect locality can also be defined interms of the call graph


tgbugs
2019-8-7 01:39:05

I do something similar for validating dataset structures using an awful hybrid of json schema and python exceptions


tgbugs
2019-8-7 01:40:12

you can store all the errors or forms that have been marked as in an errored state and then raise at the end of the module


tgbugs
2019-8-7 01:43:14

looking for the code where I do that ..


notjack
2019-8-7 01:44:46

Thinking about more constraints: I use binding-aware navigation features of my IDE at work all the time, so I’d really like to support those too. Stuff like “jump to definition”, “jump to next/previous usage”, “jump to next/previous definition of same kind (method/class/variable/etc.)“.


d_run
2019-8-7 01:46:46

There are a lot of things I would like to see in DrRacket besides aesthetics of the GUI. Having to install a paredit mode separately kind of bugs me. As does not having the same level of formatting tools that Emacs does. I almost always use racket-mode in emacs for these reasons.


notjack
2019-8-7 01:47:00

So let’s call this dichotomy “binding-aware navigation” vs “structural navigation”. The latter I would absolutely require to be possible with broken files. The former… I’m not sure? I’d like it to work still, so things like type errors don’t make it impossible for me to move around via bindings. But I’d probably be less bothered by that not working.


alexknauth
2019-8-7 01:50:32

“dichotomy”? You want both done well and they complement each other


tgbugs
2019-8-7 01:56:34

I have 2 parts of the system being used to do different things


notjack
2019-8-7 01:57:47

Right but they’re definitely very different categories with different requirements, and I don’t know of any editing features that simultaneously fall into both camps


tgbugs
2019-8-7 02:01:41

but basically it amounts to trapping errors and feeding them to syntax-warn, which you would instead feed to a module level structure during syntax phase, and the other is to use syntax-local-lift-module-end-declaration


tgbugs
2019-8-7 02:02:07

to move those to the end and trigger them


tgbugs
2019-8-7 02:02:09

I think


tgbugs
2019-8-7 02:02:45

I may not have gotten that full part working, I was trying to make the require/provide system do evil things


tgbugs
2019-8-7 02:03:12

but in principle it should be able to be used to provide errors


tgbugs
2019-8-7 02:05:50

with regard to binding vs structure, I wonder whether Guido’s assertion that “code is read more often than it is written” actually means


tgbugs
2019-8-7 02:06:12

“most languages are such a pain to edit/refactor that we usually just read them instead of trying to improve anything”


tgbugs
2019-8-7 02:08:38

which would imply that perhaps the purely syntactical is an interface for editing, and the easier it is to change a language in the way you want, or to transition from state a to state b, the better the interface


notjack
2019-8-7 02:53:09

re: syntax-warn: oh cool! I didn’t realize anyone was actually using that. I haven’t touched it in a while.


tgbugs
2019-8-7 04:35:33

I was trying to implement highlighting in DrRacket for it because it would make for a very simple demo of error detection and reporting back to the user over a whole file, but I couldn’t figure out where to hook in


nma.arvydas.silanskas
2019-8-7 04:53:14

gotta say this thread really kills my confidence in things more than initial announcement


nma.arvydas.silanskas
2019-8-7 05:05:45

makes me want to give chicken a proper try this time


notjack
2019-8-7 05:56:09

@nma.arvydas.silanskas Why?


notjack
2019-8-7 05:56:23

the confidence part, not the trying chicken part