Is anyone aware of any papers, surveys, or articles comparing and contrasting various “language workbenches” for developing domain specific languages? Two examples of workbenches I have in mind are Racket (of course,) and MontiCore. I would appreciate any references you have.
I think @robby knows this literature best, but there’s a bunch: for example: https://2016.splashcon.org/track/lwc2016#event-overview
Oh, that’s what @ben just linked to
Thank you! That’s what I was looking for
:+1:
@michael.ballantyne and @leif may know other links
The language workbench challenges are the best “compare and contrast” sources I know. I do recommend looking at some of the individual articles on JetBrains MPS and on Spoofax, however. For MPS, I like Markus Volter’s dissertation: https://voelter.de/data/books/GenericToolsSpecificLanguages-1.0-web.pdf. For Spoofax, “Scopes as Types” is recent interesting work on their static-semantics specification DSL: https://eelcovisser.org/publications/2018/AntwerpenPRV18.pdf
Everything I know has been covered here I’d say.
Weird Racket isn’t even mentioned?
What do you mean?
It’s not mentioned in the LWC paper that Sam linked?
The Lisp/Scheme/Racket tradition is pretty different from the intellectual tradition that the language-workbench people come from. That’s one reason it was good that Racket was represented in the 2016 challenge that @ben linked to.
Oh, we perhaps didn’t engage with those people as much as we should have around that time but we have since.
Yes, they are extremely different intellectual histories there.
I don’t think it is useful to get too upset about it; I would say that those people know us a lot better now than they did at the time of the publication of that paper.
And Tijs is a really great person too.
Computer science has a lot of instances where people come to very similar places via different intellectual histories, and often it can take a while, and a lot of work, to bring them together
It often can be not very enjoyable work to come together but it is profitable. IMO. Like I really wish we had some ADF+SDF or Rascal parsing deliciousness in Racket. I think it would even fit right in (as a way to get readers) to our story.
(and by “readers” I mean alternatives to read
)
Yes there are interesting ideas everywhere
I quite fancy the idea of projectional editing like MPS (but I’ve not actually tried it)
Yep, I believe this is fixed now, but I would really appreciate it if you could give it a try.
If I wanted to wait for a semaphore with a timeout is this the right way to do it (re: race conditions)? (sync/timeout how-long (wrap-evt a-semaphore (lambda (s) (semaphore-wait s) s))
I think you can just do (sync/timeout how-long a-semaphore)
The documentation only says it is ready for synchronization when semaphore-wait
would not block, not that it decrements the semaphore too. Or am I reading wrongly?
The docs say: > A semaphore is <https://docs.racket-lang.org/reference/sync.html?q=semaphore#%28tech._ready._for._synchronization%29|ready for synchronization> when https://docs.racket-lang.org/reference/semaphore.html?q=semaphore#%28def._%28%28quote._~23~25kernel%29._semaphore-wait%29%29\|semaphore-wait would not block; the <https://docs.racket-lang.org/reference/sync.html?q=semaphore#%28tech._synchronization._result%29|synchronization result> of a semaphore is the semaphore itself. They don’t say that the semaphore’s counter is decremented.
@samdphillips Yeah — just what I was thinking.
But it looks like it does decrement the counter.
Yeah that’s much simpler. From the docs I was expecting something behaving like semaphore-peek-evt
.
Heh, turns out that the Events section of the manual does mention this behavior: > Synchronizing an event may affect the state of the event. For example, when synchronizing a semaphore, then the semaphore’s internal count is decremented, just as with https://docs.racket-lang.org/reference/semaphore.html?q=semaphore#%28def._%28%28quote._~23~25kernel%29._semaphore-wait%29%29\|semaphore-wait.
@kellysmith12.21 has joined the channel