The Sparrow language

Puming via Digitalmars-d digitalmars-d at puremagic.com
Wed Apr 6 18:45:05 PDT 2016


On Wednesday, 6 April 2016 at 20:42:27 UTC, Lucian Radu 
Teodorescu wrote:
> On Wednesday, 6 April 2016 at 14:54:18 UTC, Puming wrote:
>> On Wednesday, 6 April 2016 at 13:15:48 UTC, Andrei 
>> Alexandrescu wrote:
>>> [...]
>>
>> Interesting. I've thinking about concepts too. Hopefully they 
>> could come into D. Actually, I think concept and interfaces 
>> could be combined into one feature. An interface is just a 
>> special case of a concept, saying its implementer should have 
>> the matching function signatures.
>
> In my opinion implementing concepts in terms of interfaces is 
> more restrictive than implementing them as boolean predicates. 
> You cannot create interfaces based on existence of attributes, 
> on existence of dependent types or on the existence of extern 
> function that apply to your types. Moreover, you cannot create 
> concepts based on the compile-time values associated with your 
> type.

Well, I meant the opposite, interfaces be implemented with 
concept.
So in my opinion, interface is just a spcecial case of concept.
I'm in the same park with you.
See 
https://github.com/venus-lang/venus/blob/master/docs/reference/trait.md where I call concept 'trait'.

>
> One basic example, from C++, is that you cannot create a 
> concept that distinguishes between vector<int> and 
> vector<bool>, as they theoretically should have the same 
> interface.
>
> The main uses of concepts are in my view most of the time 
> related to dependent types. I would like to have an InputRange 
> concept that will also tell me the type of the elements I can 
> read from it.
>

Exactly, that is well I found InputRange in D awkward, where I 
have to specify a long predicate everywhere in my function 
definiations of a call chain.

> Implementing concepts as predicates, give you much more 
> freedom. I would argue that you can represent many more 
> concepts with predicates. Not only you can represent all the 
> "has-a" relations, but you can also place conditions on the 
> compile-time values that your types might have, and how that 
> class may be used.
>
Yes, indeed.
> My two cents,
> LucTeo



More information about the Digitalmars-d mailing list