Thread overview
[Issue 24858] maxIndex but not minIndex sometimes returns the index as an array with a single element
Nov 15
kdevel
November 13
https://issues.dlang.org/show_bug.cgi?id=24858

pabuond@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pabuond@gmail.com

--
November 15
https://issues.dlang.org/show_bug.cgi?id=24858

Nick Treleaven <nick@geany.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nick@geany.org

--- Comment #1 from Nick Treleaven <nick@geany.org> ---
Are you sure? With 2.109.0 the last line does give `0`.

--
November 15
https://issues.dlang.org/show_bug.cgi?id=24858

kdevel <kdevel@vogtner.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kdevel@vogtner.de

--- Comment #2 from kdevel <kdevel@vogtner.de> ---
WORKSFORME

compilable version (mi.d):

```
import std.stdio : writeln;
import std.algorithm : map;
import std.math: fabs;
import std.algorithm: minIndex, maxIndex;

unittest
{
   double[] u = [-9, 3, 2, 8, 4];
   writeln(u.maxIndex); // => 3, OK
   writeln(u.map!fabs.minIndex); // => 2, OK
   writeln(u.map!fabs.maxIndex); // => [0] ??? Expected: 0
}
```

$ dmd --version
DMD64 D Compiler v2.109.1
Copyright (C) 1999-2024 by The D Language Foundation, All Rights Reserved
written by Walter Bright
$ dmd -unittest -main -run mi.d
3
2
0
1 modules passed unittests

(also works under dmd 2.098, GDC 12.1, GDC 11.3)

--
6 days ago
https://issues.dlang.org/show_bug.cgi?id=24858

--- Comment #3 from pabuond@gmail.com ---
Aw, my bad - I was doing some tests, but in combination with mir.ndslice and it
turns out it's due to a clash with mir.ndslice's maxIndex/minIndex that I
didn't realise I was importing too. So not a bug in std.algorithm :) sorry for
the false alarm! Not too sure exactly what creates the issue, some import
combinations work, but one doesn't. (Of course, it's bad to import homonyms
into the namespace - the compiler seemed to deal with it, so I thought it was
fine, but obviously it creates some issues. There doesn't seem to be a way to
use UFCS with full module names, is there?)
```
import std.stdio: writeln;
import std.math: fabs;

/* OK */
// import std.algorithm: maxIndex, minIndex, map;

/* OK */
// import std.algorithm: maxIndex, minIndex;
// import mir.ndslice: map;

/* OK */
// import std.algorithm: maxIndex, minIndex, map;
// import mir.ndslice: maxIndex, minIndex;

/* Not OK */
import std.algorithm: maxIndex, minIndex;
import mir.ndslice: maxIndex, minIndex, map;

void main()
{
        double[] u = [-9, 3, 2, 8, 4];
        writeln(u.maxIndex); // => 3, OK
        writeln(u.minIndex); // => 0, OK
        writeln(u.map!fabs.minIndex); // => [2] ???
        writeln(u.map!fabs.maxIndex); // => [0] ???
}
```

--