-
-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Long-term bridge for Rhombus-to-Racket #617
Comments
On Jan 29, 2025, at 6:46 PM, D. Ben Knoble ***@***.***> wrote: that "I remember hearing that one of the promises of developing in racket is that different modules could be developed in different languages and they could all interoperate.”
(I am not involved with Rhombus so that the rest with a grain of salt.)
My Racket manifesto, presented at some RacketCon, stated the above as a goal and provided (a tower of simple) examples. As you correctly point out, this is a non-trivial goal and indeed, we have failed time and again in various ways to get even close. Consider `#lang lazy`. I “spent” one dissertation on the goal of getting the interaction between `#lang racket` (in various flavors) and `#lang lazy` right. Put as motivating questions, why shouldn’t I be able to use `length` to count the number of elements in a finite stream? Why can’t I use `map` to apply a function to each element of such a stream? — Stephen and I got good results but none brought us close to what we aimed for. Bridging the gap between languages seems to require brute-force coercions and I am not sure it pays off to deal with those. If you have an infinite amount of time, read up on the papers that discuss “gradual typing” or “mixed-typed programs” or “optional typing” and what we called “migratory typing” for a while. In essence, this limited-area version of the question seems to kill too many trees already; I am not sure we can hope for an “easy” interop solution in general.
So I think this is “I am sorry I had such high hopes back then” message. We need tons of research to get this right and I don’t see it happening, even though Racket offers an almost ideal grounding for it — Matthias
|
In reply to
another user wrote
Separately, the following reply was posted:
Yet there is still concern from @badkins as an "industrial user" about the shift in focus. To which we have
|
We added the |
The question of Rhombus interoperability came up recently in Discord. Consider this question (anonymized):
The replies indicate
It's not that we actually believe Racket has been adversely affected Rhombus (au contraire!), but there is some perception that Racket has matured to the point that new investment goes primarily into Rhombus.
The real question
I posed a question in reply to the above discussion:
Of course, "different languages are different things," and while some have great interoperability, others need not.
And yes…
So, what can we envision about a world in which Racket users can get some of the goodies of Rhombus-style libraries?
Or is it the case that all Rhombus libraries will be so tied to something about Rhombus that they can't be made useful in Racket? (I don't think so, but arguments in either direction are probably useful.)
Some initial considerations
.
work. I think a Rhombus-aware threading macro (👀 Qi support?) could alleviate some of that pain.The text was updated successfully, but these errors were encountered: