/me mulls replacing "coherence" with "canonicity" since that's probably more accurate
(@centril sorry for cutting in, is there any open materials about rust coherence? rfc, paper etc)
@csmoe you may want to start with http://blog.ezyang.com/2014/07/type-classes-confluence-coherence-global-uniqueness/
this links to a bunch of other places
I suspect most papers about coherence are in a Haskell setting
@centril really thanks :slight_smile:
Rust enforces canonicity, which is a stronger property than coherence
canonicity being the same as "global uniqueness of implementations"
@csmoe if you are familiar with the concept of proof relevance... if we consider a trait to be a proposition and an implementation of a trait for a given type to be a witness / proof of said proposition, then canonicity can be seen as proof irrelevance
Oh cool, so Rust basically does the same thing as Haskell (without
@detrumi and no orphans as well :slight_smile:
/me is pleasantly surprised to find so many Haskell ideas in Rust :slight_smile:
@detrumi other than that, the basic idea is the same but how it is achieved is likely different; "coherence" is a Haskell term after all ^^
"is likely different", what does that mean?
@centril know nothing :joy: I need to understand the docs you gave first.
@detrumi the mechanism you use to prevent overlapping instances doesn't have to be the same
Ah, in that sense