spdegabrielle
2019-6-21 07:36:25

Yes. I tried the link and the first thing I thought was ‘why are there ASN.1 tools here?’ - but the answer is that an ASN.1 parser generator is a parser - it’s just not the sort of parser I was looking for.(though I may need to write a MARC 22 (MAchine-Readable Cataloging) parser. Getting the wrong thing, or choosing the wrong term is the scaling problem that all folksonomys suffer from! Adding descriptions to terms may help(SO/Wikipedia), by distinguishing between general terms like ‘parsing’ that may include packages that support parsing, from more specific terms like ‘parser’ or ‘parser generator’. Another option is mandating the use of a controlled vocabulary with or replacing the folksonomy terms. Both would require effort on something that isn’t necessarily interesting to Developers/Programmers/Computer Scientists. A immediate action that everyone can take would be to add an issue or PR on the repository to fix tagging issues. I’d be interested to know how other languages address this? I would be interested in how NPM, Java, Haskell, Ruby, C++, Python, Common Lisp & Smalltalk address this issue?


greg
2019-6-21 13:02:09

@notjack Oh wow. Thanks. I didn’t know that. Not-knowing this, reminds me of not-knowing (once upon a time) how to produce a @ in at-expr syntax: @"@".

In both cases, there’s a prefix that means “treat the following as an ordinary thing”. A kind of unquasiquote, like ,. Here @ or .... But commonly it’s used only in certain ways. So people like me — who tend to learn by example more than I probably ought to (vs. RTFM) — tend to miss the other ways.

I suppose a difference is: With ... ..., that tends to be the only example people know. Whereas with @"@" it’s sort of the opposite, it’s the only example people don’t know. :smile:


greg
2019-6-21 13:07:31

Uh, that’s probably not quite right. ... is a kind of quoting not unquoting? I guess I still not-know a lot.


greg
2019-6-21 13:09:01

waves hands and mumbles something about quotescaping


greg
2019-6-21 13:09:44

wanders off in search of coffee….


sepand.meenu
2019-6-21 14:13:33

@sepand.meenu has joined the channel


ararslan
2019-6-21 23:01:42

Has Racket seen much adoption in industry?


ararslan
2019-6-21 23:01:55

When I hear about it being used for a project, it’s almost always in academia


lexi.lambda
2019-6-21 23:18:23

I think the answer to “has it seen much adoption” is definitely “no,” but that isn’t to say it has seen no adoption, or even no adoption for nontrivial things.


ararslan
2019-6-21 23:18:57

Right, I assume at least some folks must be using it :slightly_smiling_face:


lexi.lambda
2019-6-21 23:20:39

I guess one of the bigger success stories people often talk about is its usage for internal tooling at Naughty Dog, but I know various people are using it for more run-of-the-mill web stuff, too. It’s definitely uncommon, though. :)


greg
2019-6-21 23:24:02

As Alexis said, it’s not a long list, but a list is here: https://github.com/racket/racket/wiki/Organizations-using-Racket


greg
2019-6-21 23:25:11

Grapevine I’ve heard of at least two FANG companies using Racket in various ways, but I doubt in a broad, deep, super “strategory” way.


greg
2019-6-21 23:25:58

Anyway, please use Racket commercially and add your company to that list! :smile:


ararslan
2019-6-21 23:29:14

I’d be interested to do so, though I don’t know Racket very well at all, and my colleague can’t stand looking at s-exprs, so it’s unlikely…


samth
2019-6-22 00:11:32

@mbutterick they’re two ends of the same place channel


samth
2019-6-22 00:11:50

ie, write to foo, read from bar and the reverse


samth
2019-6-22 00:20:03

yes


samth
2019-6-22 00:20:16

no it’s not like that


samth
2019-6-22 00:20:25

it’s like the big red cold war phone


samth
2019-6-22 00:20:40

it’s bidirectional, but one of them is in the white house and one is in the kremlin


samth
2019-6-22 00:22:40

yes


samth
2019-6-22 00:23:28

(although, to complicate things a bit, it’s not really into/out of the place, but that channel. you can send the place channel over a place channel, and then you could use it the other way around)


notjack
2019-6-22 05:05:03

Huh. Now that I think about it…. why have two names at all?


notjack
2019-6-22 05:05:35

What couldn’t you do if you didn’t name the ends separately and only bound one name?


lexi.lambda
2019-6-22 05:07:11

place is like spawning an entirely new Racket process, and it dynamic-requires a generated submodule. The original name isn’t in scope in the child; it isn’t like fork.


notjack
2019-6-22 05:12:47

That seems mostly unrelated to the surface syntax though. But now I remembered that (place id ...) is an expression, which is the real reason you need two names. Expressions don’t bind variables for use outside themselves.


lexi.lambda
2019-6-22 05:13:09

Yes, (place id ...) is like (lambda (id) ...).


notjack
2019-6-22 05:13:17

A (define-place id body ...) form would work fine


lexi.lambda
2019-6-22 05:14:46

I suppose, but I think having the same name bound to two different things would be confusing. In the parent place, id is bound to the child place itself, which also happens to be a place channel. In the child place, id is bound to a place channel that communicates with the parent. Those two things seem to deserve separate names.


notjack
2019-6-22 05:14:53

I’ve barely used places though so a module-level (place ...) expression might not make sense


notjack
2019-6-22 05:18:18

Now I want to see how real racket projects tend to use places. Even more reason to get around to building a racket API usages database of some sort.