Sam Tobin-Hochstadt

Results 548 comments of Sam Tobin-Hochstadt

This is basically the "transient" idea, first popularized in Clojure. This paper describes transients for RRB trees (what treelists are) but in C++, and uses some things we don't have...

Thanks, this looks like a reasonable approach.

Unfortunately, fixing this exposes problems in a number of other libraries. In particular, some `math` library operations will have different and more limited types (they were of course wrong before).

We should just change `typed/rackunit` to use `unsafe-require/typed` in a bunch of places.

Immutable hash tables would support `hash-set`, and you can't pass a mutable hash table where one is expected. Read-only tables would admit mutable ones, but you could only read them....

Yes, all of these things would be good ideas, and I think we could make everything compatible.

`HashTable` would be a supertype of the other types. I think the story for `Set` is less obvious. It's not clear that supporting more without supporting generic sets is useful.

Sure, if there's need, we should support it. I think we should just split `Set` and `MutableSet` though.

`case->` is also a form of intersection types. Also the second link is to the documentation; do you mean you would like to see more discussion in the guide?

It would be helpful in the future to group changes by rule (either into separate commits in a PR, separate PRs, separate parts of the PR description, etc).