00:31:01  * MarcoBrunoBRjoined
00:31:29  * jovisjoined
00:33:39  * jovisquit (Client Quit)
00:37:51  <Bakkot>Opening up a place to talk about frozen sets: https://github.com/bakkot/proposal-frozen-set
00:38:05  <Bakkot>not a formal proposal at the moment, just a place to discuss ideas
00:42:33  <devsnek>Bakkot: looks cool
00:43:06  <devsnek>would be a shame to leave out other things though (time for a freezable protocol? :P)
00:43:50  <Bakkot>Map and probably WeakSet/WeakMap I'm on board with; what other things are you interested in?
00:44:38  <devsnek>✨ whatever the future holds ✨
00:54:44  * keith_mi_quit (Quit: My Mac Pro has gone to sleep. ZZZzzz…)
00:55:02  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:59:30  <Domenic>I really like bmeck's idea of adding interceptors to the set constructor that would allow accepting/rejecting values. Seems like you could build a freeze switch on top of that, plus a bunch more.
01:11:11  <Bakkot>Huh, neat. Is that written about somewhere?
01:11:21  <Domenic>I thought he had a repo
01:11:23  <devsnek>immutability seems more primitive to me
01:11:30  <devsnek>although it could be simulated
01:11:38  <Domenic>How would you build bmeck's idea on top of immutability?
01:11:39  <devsnek>Bakkot: https://github.com/bmeck/proposal-richer-keys/
01:11:49  <devsnek>i mean the other way around
01:12:32  <Domenic>Ah, yeah, I think bmeck's idea is indeed more primitive
01:12:38  <devsnek>like you said it could be simulated with directing all keys to some key that never appears in the map/set (like a symbol that isn't shared with anything)
01:13:30  <Domenic>Or just throwing
01:14:28  <devsnek>yeah i guess that would be the case since they're a fluent interface
01:14:54  <Bakkot>that repo does not look like the description given.
01:15:06  <Domenic>https://github.com/bmeck/proposal-richer-keys/tree/master/collection-rekey
01:15:10  <Domenic>It's a bit broader
01:15:25  <Domenic>I only remembered the part where you could throw or not
01:15:34  <Domenic>But I guess you can return a different key instead
01:16:06  <devsnek>composite keys are pretty cool
01:25:16  <Bakkot>Domenic: oh, this wouldn't work for frozen sets as currently stated - the point of frozen sets is that you'd still be able to query them, but the `rekey` method does not distinguish between "this key was passed to modify a thing" and "this thing was passed to query a thing". (also doesn't solve `.clear`.) but still worth noting, and could maybe be tweaked.
01:25:42  <Domenic>Oh, good point
01:26:13  <Domenic>Yeah, I guess I just remembered the proposal as if it were designed for my use case, not as it actually was :p
01:27:33  <devsnek>i'm kinda imagining a general design like [@@immutable]() (expected to return new instance) or [@@makeImmutable]() (makes immutable in place)
01:27:57  <devsnek>then add a syntax to run that method
01:28:06  <Bakkot>I dunno how I feel about making this so general. immutability is a really domain-specific concept.
01:28:32  <devsnek>a lot of languages have this first class
01:28:35  <devsnek>like c++ const
01:28:52  <Bakkot>also this should really definitely for sure not have syntax, jeebus
01:29:23  <devsnek>lol
01:29:31  <devsnek>just differing opinion then
01:29:36  <Bakkot>syntax is bad
01:29:40  <Bakkot>I keep meaning to give a talk to that effect
01:30:20  <devsnek>i generally agree
01:31:23  <Bakkot>out of curiousity, what languages other than C++ have a notion of "const" which is transitive, like C++'s?
01:31:59  * keith_millerjoined
01:32:45  <devsnek>rust has `mut` for external immutability
01:33:31  <devsnek>external mutability*
01:34:03  <devsnek>and some other "cell" things for transitive
01:35:27  <devsnek>i think most of the functional languages have immutability on everything by default
01:43:39  * keith_millerquit (Remote host closed the connection)
01:43:53  * keith_millerjoined
01:47:25  * cloudshuquit (Quit: Connection closed for inactivity)
01:49:36  * MarcoBrunoBRquit (Quit: Page closed)
01:59:39  * aki_joined
02:00:07  * akirosequit (Ping timeout: 250 seconds)
02:00:08  * aki_changed nick to akirose
02:12:01  * gcommerquit (Read error: Connection reset by peer)
02:12:19  * gcommerjoined
02:37:08  * NilSetquit (Ping timeout: 272 seconds)
02:43:43  * jwaldenquit (Quit: back later maybe)
03:13:06  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:13:46  * dpkquit (Ping timeout: 246 seconds)
03:22:45  * dpkjoined
03:31:43  <ljharb>Bakkot: i'd want regexps to be freezeable (ie, .compile)
03:32:12  <ljharb>i super like the idea of enhancing the builtin to allow custom interceptors - that would also allow me to create a builtin Set that didn't coalesce -0 and +0
04:06:07  * akirosequit (Ping timeout: 240 seconds)
04:06:48  * akirosejoined
04:39:29  * jmdyckquit (Remote host closed the connection)
04:41:12  * keith_millerjoined
06:13:53  * akirosequit (Ping timeout: 268 seconds)
06:14:59  * akirosejoined
06:42:14  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
06:56:39  * keith_millerjoined
07:56:58  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:20:42  * aki_joined
08:22:19  * akirosequit (Ping timeout: 272 seconds)
08:22:19  * aki_changed nick to akirose
08:31:03  * keith_millerjoined
08:31:44  * keith_millerquit (Client Quit)
08:55:55  * keith_millerjoined
08:55:57  * keith_millerquit (Client Quit)
10:27:55  * aki_joined
10:28:20  * akirosequit (Ping timeout: 272 seconds)
10:28:21  * aki_changed nick to akirose
12:35:10  * akirosequit (Ping timeout: 246 seconds)
12:35:34  * akirosejoined
12:44:44  * keith_millerjoined
13:05:36  * jmdyckjoined
13:31:40  * plumajoined
13:40:31  * keith_millerquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:41:22  * aki_joined
14:41:55  * akirosequit (Ping timeout: 250 seconds)
14:41:56  * aki_changed nick to akirose
15:04:44  * gibson042joined
15:16:20  * gibson042quit (Ping timeout: 244 seconds)
15:31:33  * gibson042joined
16:35:07  * marcobrunojoined
16:35:36  * marcobrunoquit (Client Quit)
16:49:16  * akirosequit (Ping timeout: 250 seconds)
16:50:06  * akirosejoined
17:17:12  * AtumTjoined
17:23:55  * jmdyckquit (Ping timeout: 246 seconds)
17:25:02  * jmdyckjoined
17:30:37  * cloudshujoined
17:31:20  * jwaldenjoined
18:23:11  * keith_millerjoined
18:26:13  * keith_millerquit (Remote host closed the connection)
18:33:35  * keith_millerjoined
18:36:22  * AtumT_joined
18:39:24  * AtumTquit (Ping timeout: 246 seconds)
18:49:53  * AtumTjoined
18:51:12  * AtumT_quit (Ping timeout: 272 seconds)
18:56:26  * keith_millerquit (Remote host closed the connection)
18:56:37  * keith_mi_joined
18:57:28  * aki_joined
18:57:58  * akirosequit (Ping timeout: 250 seconds)
18:57:59  * aki_changed nick to akirose
18:58:15  * jwaldenquit (Quit: ChatZilla 0.9.92-rdmsoft [XULRunner 35.0.1/20150122214805])
19:06:04  * tobie_quit
19:06:43  * tobie_joined
19:06:52  * tobie_quit (Client Quit)
19:07:31  * tobiejoined
19:19:45  * keith_millerjoined
19:21:10  * keith_millerquit (Client Quit)
19:21:47  * keith_mi_quit (Ping timeout: 240 seconds)
19:27:01  * bpaytonjoined
19:34:26  * keith_millerjoined
19:37:01  * keith_mi_joined
19:56:28  * bpaytonquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:57:03  * bpaytonjoined
20:11:31  * bpaytonquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:14:03  * jwaldenjoined
20:18:10  * plumaquit (Quit: Connection closed for inactivity)
20:28:54  * keith_mi_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:34:40  * keith_millerquit (Quit: My Mac Pro has gone to sleep. ZZZzzz…)
20:38:36  * bpaytonjoined
21:04:41  * aki_joined
21:05:07  * akirosequit (Ping timeout: 240 seconds)
21:05:07  * aki_changed nick to akirose
22:20:41  * gibson042quit (Quit: Leaving.)
22:54:24  * keith_millerjoined
23:04:26  * keith_mi_joined
23:11:40  * akirosequit (Ping timeout: 244 seconds)
23:13:40  * akirosejoined
23:14:20  * bpaytonquit (Quit: My MacBook has gone to sleep. ZZZzzz…)