abmclin
2020-7-8 16:30:14

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.



samth
2020-7-8 16:32:02

I think @robby knows this literature best, but there’s a bunch: for example: https://2016.splashcon.org/track/lwc2016#event-overview


samth
2020-7-8 16:32:11

Oh, that’s what @ben just linked to


abmclin
2020-7-8 16:32:37

Thank you! That’s what I was looking for



abmclin
2020-7-8 16:32:53

:+1:


ben
2020-7-8 16:35:10

@michael.ballantyne and @leif may know other links


michael.ballantyne
2020-7-8 16:58:35

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


robby
2020-7-8 17:18:37

Everything I know has been covered here I’d say.


spdegabrielle
2020-7-8 17:39:08

Weird Racket isn’t even mentioned?


robby
2020-7-8 17:39:21

What do you mean?


spdegabrielle
2020-7-8 17:40:07

It’s not mentioned in the LWC paper that Sam linked?


samth
2020-7-8 17:41:17

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.


robby
2020-7-8 17:41:19

Oh, we perhaps didn’t engage with those people as much as we should have around that time but we have since.


robby
2020-7-8 17:41:35

Yes, they are extremely different intellectual histories there.


robby
2020-7-8 17:42:16

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.


robby
2020-7-8 17:42:51

And Tijs is a really great person too.


samth
2020-7-8 17:44:40

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


robby
2020-7-8 17:46:28

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.


robby
2020-7-8 17:46:54

(and by “readers” I mean alternatives to read)


spdegabrielle
2020-7-8 17:52:24

Yes there are interesting ideas everywhere


spdegabrielle
2020-7-8 17:55:33

I quite fancy the idea of projectional editing like MPS (but I’ve not actually tried it)


jbclements
2020-7-8 18:22:42

Yep, I believe this is fixed now, but I would really appreciate it if you could give it a try.


samdphillips
2020-7-8 18:53:53

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))


samth
2020-7-8 18:55:12

I think you can just do (sync/timeout how-long a-semaphore)


samdphillips
2020-7-8 18:56:25

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?


jaz
2020-7-8 18:56:28

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.


jaz
2020-7-8 18:56:53

@samdphillips Yeah — just what I was thinking.


jaz
2020-7-8 19:02:21

But it looks like it does decrement the counter.


samdphillips
2020-7-8 19:18:41

Yeah that’s much simpler. From the docs I was expecting something behaving like semaphore-peek-evt .


jaz
2020-7-8 19:44:14

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
2020-7-9 01:13:42

@kellysmith12.21 has joined the channel