Lambda crabs, part 1: A mathematical introduction to lifetimes and regions
ticki.github.io
ticki.github.io
For people who are unfamiliar with posets, lattices, etc., this introduction might help a bit: http://old.iseclab.org/people/enji/infosys/lattice_tutorial.... (PDF)
For introduction to how Rust's ownership/borrowing/lifetimes system works, see the three chapters starting here: https://doc.rust-lang.org/book/ownership.html
And a "standard disclaimer" for math: To understand this material, you may need to read slowly, look things up, and work through each example. Math is often very simple, but that doesn't mean that it's easy. The trick is usually to stare at it from enough different directions that the underlying simplicity finally "clicks," and you wonder how you could have ever been confused. If you're unfamiliar with the topics in question, a page per day can be a perfectly acceptable reading speed.
Ticki does really great work in Rust. I think the only thing he's doing that I disagree with is his RFC for a keyword for dynamic dispatch (all we really need is to distinguish trait objects - dynamic dispatch is just the symptom).
Ordered sets also occur in denotational semantics http://homepage.cs.uiowa.edu/~slonnegr/plf/Book/Chapter10.pd...
http://www.cliffc.org/blog/2012/03/24/too-much-theory-part-3...
All that aside, can we stop making up new words for things that already have words? -- correction, can we stop re-purposing old words for old things and acting like they're new? I mean really, “outlives or equals to”?
If abstract algebra is so "esoteric" for you, I'm afraid you should rather read Trump speeches instead of following HN.
> I mean really, “outlives or equals to”?
Suggest a better alternative and prove that we should throw away decades worth of papers and start using your new terminology.
We say equality, inequality, equivalence (equal valence, i.e. value) relation. To be equal -> equality. To outlive -> ? Valid question, outlives doesn't quite fit? To exceed the lifetime, to go beyond the region -> an excession relation, an overboundedness relation? I jest (in part). Naming things is hard! One of the two hard things in programming, as they say.
> Suggest a better alternative and prove that we should throw away decades worth of papers and start using your new terminology.
“outlives or equals to” -> “outlives or is equal to in scope/duration” reads better to my ears.
So it's not even to outlive, it's to live for the same amount as or outlive.
GP has valid language use concerns. And yes, abstract algebra is esoteric.
ps: The Trump swipe is crass.
I think talking about the "outlives" relation is reasonably clear. "A outlives B (written B < A) if ...".
The relation for <= could be written "outlives or is equal to", or "lives at least as long as". Thus "B <= A" could be spoken "A lives at least as long as B", or "A outlives or is equal to B".
> abstract algebra is esoteric.
How is it so? It's fundamental and essential. "Esoteric" implies "mostly useless", which is definitely not true.
[0] http://www.thefreedictionary.com/esoterica
[1] https://en.wikipedia.org/wiki/Western_esotericism
[2] http://www.thefreedictionary.com/esoteric
edit: I agree, abstract algebra is fundamental, beautiful, and essential - but in fairness, it is highly domain specific and if Rust's type system can be explained as exactly and succinctly with terms closer to home thenwe ought to give it a shot
It is "domain specific" to pretty much all the domains in existence.
Even those pitiful articles from the dynamic typing zealots are very often coming to the front page, so a high quality explanation of a trendy topic in the modern type systems research should definitely attract a lot of attention.