Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
February 18, 2014 std.range.equal or == in isPalindrome | ||||
---|---|---|---|---|
| ||||
I'm curious to why we need std.range.equal in cases such as bool isPalindrome(Range)(in Range range) if (isBidirectionalRange!Range) { return range.retro.equal(range); } Why isn't equality == operator used here instead? /Per |
February 18, 2014 Re: std.range.equal or == in isPalindrome | ||||
---|---|---|---|---|
| ||||
Posted in reply to Per Nordlöw | Per Nordlöw:
> Why isn't equality == operator used here instead?
In some cases I'd even like to use ~ instead of chain().
Bye,
bearophile
|
February 18, 2014 Re: std.range.equal or == in isPalindrome | ||||
---|---|---|---|---|
| ||||
Posted in reply to Per Nordlöw | On Tuesday, 18 February 2014 at 09:31:55 UTC, Per Nordlöw wrote:
> I'm curious to why we need std.range.equal in cases such as
>
> bool isPalindrome(Range)(in Range range) if (isBidirectionalRange!Range)
> {
> return range.retro.equal(range);
> }
>
> Why isn't equality == operator used here instead?
>
> /Per
1) opEquals cannot be a free function
2) there's no telling what opEquals does if Range defines it
IOW, equal() has a defined by-element-comparison semantics, while opEquals doesn't.
|
February 18, 2014 Re: std.range.equal or == in isPalindrome | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On Tuesday, 18 February 2014 at 09:34:41 UTC, bearophile wrote:
> In some cases I'd even like to use ~ instead of chain().
Range interface should be minimal. Don't forget that user types can provide range interface and still benefit from operator overloading for different purposes.
|
February 18, 2014 Re: std.range.equal or == in isPalindrome | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stanislav Blinov | Stanislav Blinov:
> Range interface should be minimal.
I agree. But I didn't mean to ask for that operator in the Range protocol. I think some ranges should define a ~ operator. It's easy to write a "chainable" trait. I did that for my nonstandard D1 library.
Bye,
bearophile
|
February 18, 2014 Re: std.range.equal or == in isPalindrome | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On Tuesday, 18 February 2014 at 10:47:33 UTC, bearophile wrote:
> Stanislav Blinov:
>
>> Range interface should be minimal.
>
> I agree. But I didn't mean to ask for that operator in the Range protocol. I think some ranges should define a ~ operator. It's easy to write a "chainable" trait. I did that for my nonstandard D1 library.
>
> Bye,
> bearophile
Could you post the isChainable trait?
I'm curious :)
/Per
|
February 18, 2014 Re: std.range.equal or == in isPalindrome | ||||
---|---|---|---|---|
| ||||
Posted in reply to Per Nordlöw | On Tuesday, 18 February 2014 at 11:39:12 UTC, Per Nordlöw wrote: > On Tuesday, 18 February 2014 at 10:47:33 UTC, bearophile wrote: >> Stanislav Blinov: >> >>> Range interface should be minimal. >> >> I agree. But I didn't mean to ask for that operator in the Range protocol. I think some ranges should define a ~ operator. It's easy to write a "chainable" trait. I did that for my nonstandard D1 library. >> >> Bye, >> bearophile > > Could you post the isChainable trait? > > I'm curious :) > > /Per Ahh, I guess you mean http://forum.dlang.org/thread/bug-6043-3@http.d.puremagic.com%2Fissues%2F /Per |
Copyright © 1999-2021 by the D Language Foundation