alist .sort .map!(x => x * x) .map!(x => x - x/2) .map!(x => x + 1);
This seems like what you're asking. Each of those is a template. And while this is all logic code, D has inferred the type aka: SortedRange!Map!Map!Map
With some details removed.
alist .sort .map!(x => x * x) .map!(x => x - x/2) .map!(x => x + 1);
This seems like what you're asking. Each of those is a template. And while this is all logic code, D has inferred the type aka: SortedRange!Map!Map!Map
With some details removed.