On Saturday, 3 September 2016 at 09:31:59 UTC, Manu wrote:
std.algorithm is extremely simple, it doesn't do anything except raw algorithm-ey stuff. It doesn't attempt to invoke functionality on the data it's working on.

Right now I'm working on image processing. There are lots of image data types, and they all have things like interpolation and blending functions. Write an image processing algorithm that calls out to lerp
or blend, and you'll run into these problems instantly.
I was writing some audio software some time back, again, trying to use stream processing extensively because it's a perfect match for that
workload, but same problem!

Write an algorithm that does _work_, rather than does algorithm logic, and you can't miss this problem. You need to call associated functions to do work.

I have had problems with not having C++ style ADL before, but in the end I'm much happier without it.

At the risk of repeating previous posts, Is it specifically this?

auto someAlgorithm(T0, T1)(T0 arg0, T1 arg1)
{
    // do some work
    blend(arg0, arg1);
    // more work
}

And you want some way for the author of the types being passed in to define an overload of blend somewhere else that that someAlgorithm is not explicitly aware of? What possible lookup rules would you want to make that work? I can think of a lot of different schemes depending on what you want/need for the situation. D goes the simple, conservative route by default and just looks in progressively wider scopes, which is uncontroversial and good enough in most cases. More complicated cases can be done with various other methods, all of which will then necessarily involve some explicit choice (e.g. passing the scope, passing the function, importing scope etc...) in order to know which one you're using. This seems to me to be a good thing?

P.s. your ordinary programmer argument: can you imagine that same ordinary programmer understanding how to properly use and avoid abusing C++ lookup rules?
        • Re: ADL Tobias Müller via Digitalmars-d
        • Re: ADL ZombineDev via Digitalmars-d
        • Re: ADL Walter Bright via Digitalmars-d
        • Re: ADL Andrei Alexandrescu via Digitalmars-d
    • Re: ADL Timon Gehr via Digitalmars-d
      • Re: ADL Walter Bright via Digitalmars-d
        • Re: ADL Walter Bright via Digitalmars-d
      • Re: ADL Stefan Koch via Digitalmars-d
  • Re: ADL Manu via Digitalmars-d
  • Re: ADL Walter Bright via Digitalmars-d
  • Re: ADL John Colvin via Digitalmars-d
  • Re: ADL Walter Bright via Digitalmars-d
  • Re: ADL Walter Bright via Digitalmars-d
  • Re: ADL Andrei Alexandrescu via Digitalmars-d
  • Re: ADL Andrei Alexandrescu via Digitalmars-d
    • Re: ADL Manu via Digitalmars-d
    • Re: ADL Timon Gehr via Digitalmars-d
      • Re: ADL Andrei Alexandrescu via Digitalmars-d
        • Re: ADL deadalnix via Digitalmars-d
        • Re: ADL Timon Gehr via Digitalmars-d

Reply via email to