Hello Nick,

"Nick Sabalausky" <a...@a.a> wrote in message
news:hujd9m$11o...@digitalmars.com...

"Nick Sabalausky" <a...@a.a> wrote in message
news:hujd6a$11e...@digitalmars.com...

Assuming, of course, a 'max' that works on a range, which would be
easy enough to do. Probably something like:

ElementType!T max(T range)  // Corrected

{
return reduce!ordinaryMax(range);
// Or
return reduce!"a>b?a:b"(range);
}
Or:

alias reduce!"a>b?a:b" max;

God, I love D :)


so we have:

alias reduce!"a>b?a:b" range_max;

CommonType!(staticMap!(ElementType, T)) largestElement(T...)(T args)
{
 static assert( !is(typeof(return) == void) );
 return max( map!max(args) );
}

Why isn't that just one line, like:

alias polyMapReduce!(reduce!"a>b?a:b", "a>b?a:b") largestElelemt;

I'm shure a better one could be written but I think this would do it:

auto polyMapReduce(alias map, string reduce, T...)(T t)
{
    static assert(T.length > 0);
    static if(T.length > 1)
    {
        auto a = map(t[0]);
        auto b = polyMapReduce!(map,reduce)(t[1..$]);
        return mixin(reduce);
    }
    else
        return map(t[0]);
}

--
... <IXOYE><



Reply via email to