And Happy April Fools' everyone.  Nicely done Pradip.

On Tuesday, April 1, 2014 3:58:34 PM UTC-4, Jozef Wagner wrote:
>
> Reducers should be given IMO a more attention, support and importance and 
> I'm actually experimenting on a hypothesis that reducers can replace lazy 
> seqs in most cases (excluding simple stuff, e.g. destructuring). Imagine a 
> core API where functions like map, filter, rseq, range etc. are working 
> with reducers by default and falling back to seqs only in rare cases or by 
> explicit request.
>
> Jozef
>
> On Tuesday, April 1, 2014 9:28:49 PM UTC+2, tbc++ wrote:
>>
>> The question is "replace them with what"? I remember with not so fond 
>> memories the days of using IEnumerable in C#, there was no immutability and 
>> no caching. So if you created a massive chain of data and iterated over it 
>> twice you would have to execute the entire chain of functions twice. With 
>> LazySeqs the data would be evaluated once and the final result stored for 
>> each iterator. 
>>
>> It's a trade off, but I'm constantly amazed at how wickedly fast LazySeqs 
>> are. 
>>
>> Also, reducers are a good option when LazySeqs aren't fast enough. 
>>
>> Timothy
>>
>>
>> On Tue, Apr 1, 2014 at 1:17 PM, Andy Fingerhut <andy.fi...@gmail.com>wrote:
>>
>>> Back of the envelope meaning that you thought about the implementation 
>>> and are estimating, or you have measurements?
>>>
>>> Either way, I agree that there are definitely use cases where non-lazy 
>>> processing can give performance improvements.  Probably even relatively 
>>> common use cases.
>>>
>>> Cases where lazy sequences have advantages (not intended to be an 
>>> exhaustive list):
>>>
>>> + if you determine that you do not need the whole sequence, portions of 
>>> it need not be generated at all (perhaps large portions)
>>>
>>> + I do not have measurements for this use case to quantify the potential 
>>> performance benefits, but if you have a 'pipeline' of lazy operations, e.g. 
>>> a map on function f1 whose result is fed into a map on function f2, then a 
>>> filter on function f3, etc., the time order of execution will typically 
>>> have f1 called on an item in the sequence, then f2, then f3, etc., and only 
>>> after that is done will you go back and call f1, f2, f3, ... on the next 
>>> item of the original sequence.  There can be performance benefits from 
>>> keeping those intermediate results in a processor's cache while doing f1, 
>>> f2, f3, etc., rather than a whole pass of applying f1, then going back to 
>>> the beginning and doing a whole pass of f2, etc.  This is primarily an 
>>> issue with sequences that are large enough that they do not fit into the 
>>> cache.
>>>
>>> Andy
>>>
>>>
>>>
>>> On Tue, Apr 1, 2014 at 11:19 AM, Pradip Caulagi <pra...@wwstay.com>wrote:
>>>
>>>> I am just a newbie who has been hanging around and it is rather late in 
>>>> the day to bring this up but...
>>>>
>>>> should we remove lazy sequences and lazy evaluation from Clojure?  Back 
>>>> of the envelope calculations show that we can get 2x performance 
>>>> improvements.
>>>>
>>>> Thanks,
>>>> Pradip
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to clo...@googlegroups.com
>>>> Note that posts from new members are moderated - please be patient with 
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> clojure+u...@googlegroups.com
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/clojure?hl=en
>>>> --- You received this message because you are subscribed to the Google 
>>>> Groups "Clojure" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to clojure+u...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>  -- 
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+u...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to clojure+u...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> -- 
>> “One of the main causes of the fall of the Roman Empire was that–lacking 
>> zero–they had no way to indicate successful termination of their C 
>> programs.”
>> (Robert Firth) 
>>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to