www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Lazy sort

reply "ixid" <adamsibson hotmail.com> writes:
Does sort have to be eager or would it be possible to have a lazy 
version? It's messy to always have to use array and leap in and 
out of lazy operations within a UFCS chain. Surely as many 
functions as possible should be optionally lazy.
Sep 11 2015
next sibling parent "deed" <none none.none> writes:
On Friday, 11 September 2015 at 10:41:16 UTC, ixid wrote:
 Does sort have to be eager or would it be possible to have a 
 lazy version? It's messy to always have to use array and leap 
 in and out of lazy operations within a UFCS chain. Surely as 
 many functions as possible should be optionally lazy.
Wouldn't that mean removing min or max lazily?
Sep 11 2015
prev sibling next sibling parent "Chris" <wendlec tcd.ie> writes:
On Friday, 11 September 2015 at 10:41:16 UTC, ixid wrote:
 Does sort have to be eager or would it be possible to have a 
 lazy version? It's messy to always have to use array and leap 
 in and out of lazy operations within a UFCS chain. Surely as 
 many functions as possible should be optionally lazy.
Are you the lazy sort? ;) Sorry, I couldn't resist the pun.
Sep 11 2015
prev sibling parent reply "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= writes:
On Friday, 11 September 2015 at 10:41:16 UTC, ixid wrote:
 Does sort have to be eager or would it be possible to have a 
 lazy version? It's messy to always have to use array and leap 
 in and out of lazy operations within a UFCS chain. Surely as 
 many functions as possible should be optionally lazy.
https://en.wikipedia.org/wiki/Priority_queue
Sep 11 2015
parent reply "ixid" <adamsibson hotmail.com> writes:
On Friday, 11 September 2015 at 11:08:29 UTC, Ola Fosheim Grøstad 
wrote:
 On Friday, 11 September 2015 at 10:41:16 UTC, ixid wrote:
 Does sort have to be eager or would it be possible to have a 
 lazy version? It's messy to always have to use array and leap 
 in and out of lazy operations within a UFCS chain. Surely as 
 many functions as possible should be optionally lazy.
https://en.wikipedia.org/wiki/Priority_queue
Yes, I was reading about heapsort. I was only thinking about the usability POV (I mean isn't reduced pretty much an eager operation that accepts a lazy input? Why can't sort do that?) but it could also offer some performance improvement if you only use a part of the sorted array.
Sep 11 2015
parent "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= writes:
On Friday, 11 September 2015 at 12:23:52 UTC, ixid wrote:
 Yes, I was reading about heapsort. I was only thinking about 
 the usability POV (I mean isn't reduced pretty much an eager 
 operation that accepts a lazy input? Why can't sort do that?) 
 but it could also offer some performance improvement if you 
 only use a part of the sorted array.
I think there is something called "partial sort" in Phobos, but "lazy" sorting is the same as a priority queue. You need to look at all elements before finding the largest one, that's why you cannot turn sort into a plain generator (or lazy range as some may call it).
Sep 11 2015