digitalmars.D.learn - Is there an elegant way of making a Result eager instead of lazy?
- ixid (10/10) Mar 20 2012 I understand the point of lazy evaluation but I often want to use
- simendsjo (3/12) Mar 20 2012 std.array includes a method, array(), for doing exactly this:
- bearophile (5/7) Mar 20 2012 With 2.059 you can write that also in a more readable way, because there...
- =?UTF-8?B?QWxpIMOHZWhyZWxp?= (7/14) Mar 20 2012 Going off-topic but there is also the new => lambda syntax:
- H. S. Teoh (7/8) Mar 20 2012 [...]
- ixid (1/1) Mar 20 2012 Thanks, very handy!
I understand the point of lazy evaluation but I often want to use the lazy algorithm library functions in an eager way. Other than looping through them all which feels rather messy is there a good way of doing this? Is there a reason not to allow the following to be automatically treated eagerly or is there some kind of cast or conv way of doing it? int[] test1 = [1,2,3,4]; int[] test2 = map!("a + a")(test1); //Eager, not allowed auto test3 = map!("a + a")(test1); //Lazy
Mar 20 2012
On Tue, 20 Mar 2012 18:36:46 +0100, ixid <nuaccount gmail.com> wrote:I understand the point of lazy evaluation but I often want to use the lazy algorithm library functions in an eager way. Other than looping through them all which feels rather messy is there a good way of doing this? Is there a reason not to allow the following to be automatically treated eagerly or is there some kind of cast or conv way of doing it? int[] test1 = [1,2,3,4]; int[] test2 = map!("a + a")(test1); //Eager, not allowed auto test3 = map!("a + a")(test1); //Lazystd.array includes a method, array(), for doing exactly this: int[] test2 = array(map!"a+a"(test1)); //eager
Mar 20 2012
simendsjo:std.array includes a method, array(), for doing exactly this: int[] test2 = array(map!"a+a"(test1)); //eagerWith 2.059 you can write that also in a more readable way, because there is less nesting: int[] test2 = test1.map!q{a + a}().array(); Bye, bearophile
Mar 20 2012
On 03/20/2012 10:50 AM, bearophile wrote:simendsjo:there is less nesting:std.array includes a method, array(), for doing exactly this: int[] test2 = array(map!"a+a"(test1)); //eagerWith 2.059 you can write that also in a more readable way, becauseint[] test2 = test1.map!q{a + a}().array();Going off-topic but there is also the new => lambda syntax: int[] test2 = test1.map!(a => a + a)(test1).array(); Although, it makes it longer in cases like the one above. :) By the way, is there a name for "the => syntax"?Bye, bearophileAli
Mar 20 2012
On Tue, Mar 20, 2012 at 02:52:05PM -0700, Ali Çehreli wrote: [...]By the way, is there a name for "the => syntax"?[...] You just named it. :-) T -- "Real programmers can write assembly code in any language. :-)" -- Larry Wall
Mar 20 2012