tardy v0.0.1 - Runtime polymorphism without inheritance

Petar Petar
Tue Jun 16 09:18:49 UTC 2020


On Tuesday, 16 June 2020 at 09:15:10 UTC, Atila Neves wrote:
> On Tuesday, 16 June 2020 at 03:56:52 UTC, Petar Kirov 
> [ZombineDev] wrote:
>> On Saturday, 13 June 2020 at 15:11:49 UTC, Atila Neves wrote:
>>> https://code.dlang.org/packages/tardy
>>> https://github.com/atilaneves/tardy
>>>
>>
>> Looks interesting, nice work!
>>
>> How does it compare to:
>> https://dlang.org/phobos/std_experimental_typecons#.wrap ?
>
> For starters, that uses a class and inheritance internally and 
> therefore has all the drawbacks of that approach as laid out in 
> tardy's README.md. Then there's the lack of allocator support.
>
>> 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.

Cool!

>> 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:

Yes I meant trait objects actually.

> https://doc.rust-lang.org/reference/types/trait-object.html
>
> The main difference is that tardy is supposed to give the user 
> choices over how the dispatch is actually implemented. 
> Allocators alone are huge.

Interesting!

>> I guess the main difference, would be that Rust enforces a 
>> nominal type system like approach, where 2 differently named 
>> traits that otherwise define the same interface are not 
>> considered interchangeable.
>
> Yes, that's also a difference.




More information about the Digitalmars-d-announce mailing list