On Tuesday, 16 June 2020 at 09:15:10 UTC, Atila Neves wrote:
[snip]
In the more longer-term, is the goal of the project to implement a Typescript / Go interfaces like structural type system in user space?

Yes. Other than allowing multiple interfaces, I think it's already implemented.

I'm not familiar with what Typescript does, but doesn't Go allow interfaces to be implemented by free-standing functions? That is a little bit more similar to open methods. This requires the type inherit from the interface and implement member functions.


Also how would it compare to Rust traits?

Rust's traits are usually used like D's template contraints and Haskell's type classes. The only way they're relevant here are trait objects:

https://doc.rust-lang.org/reference/types/trait-object.html

[snip]

Similar to above, aren't Rusts's trait objects defined using separate impl blocks, rather than as member functions.

---

I'm not that knowledgeable of Boost, but I see some similarities with Boost's type_erasure library. However, one main difference is that it is implemented with concepts, rather than the equivalent of interfaces. I would guess using interfaces has some benefits in terms of implementation since you know exactly what functions need to be called. Something like @models is very flexible, but that might be a downside.

Reply via email to