On 12/01/2012 1:10 PM, Graham Fawcett wrote:

Note the phrase "aren't known at compile time." That reads as if bounded types
offer runtime polymorphism. (They don't, do they?)

They do! :)

The very interesting thing about the way interfaces worked out is that they managed to unify a whole pile of concepts at once:

  - Static overload dispatch (a la C++ non-virtual methods)
  - Per-type dynamic dispatch (a la typeclasses, caller passes vtbl)
  - Per-value dynamic dispatch (a la C++ virtual methods, @val has vtbl)
  - Separate type kinds (compiler provides impl of reserved iface)

This broad applicability of the *same* language-UI concept was sort of the winning argument about why they were worth trying. The theory is that much of the time the user doesn't *really* care which of these is happening under the hood, and don't need to: they just want whichever makes sense given what they've written. So it's nice that they can all emerge semi-coherently from the same construct, when used in varying contexts.

I've still not given them a serious exploration but I am pretty excited.

-Graydon
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to