Yeah the key part is not whether something is a _stream_ (functions in Stream 
module tend to return %Stream{} or fun/2) but whether something is an 
_enumerable_. There’s no benefit turning, say, list into a stream, list is 
already _enumerable_!

> On 24 Jul 2024, at 09:38, Robert Dober <robert.do...@gmail.com> wrote:
> 
> Oh I think I get it
> Why create just a wrapper around an enum with `Stream.map(...;&(&1))` when 
> you can call all the transformations on the enum anyway. 
> In other words instead of `x|>Stream.new|>Stream.something|>...  I just get 
> rid of the Stream.new
> 
> Correct?
> 
> On Wednesday, July 24, 2024 at 9:22:45 AM UTC+2 Robert Dober wrote:
>>  I am afraid I do not get the message José, did you mean that 
>> `Stream.map(enum, &(&1))` is an antipattern?
>> Well my use case is very simple, I have a list and I want to make it lazy, 
>> why should I not use an idiom like the above?
>> IIUC I should not use Stream at all for this, right? But is there a 
>> different way? There is no Enum.to_stream for example.
>> 
>> Hmm maybe Stream and List do not play in the same class as Stream does not 
>> implement Collectable either?
>> 
>> Can you help me out with this, please
>> Robert
>> 
>> On Wednesday, July 24, 2024 at 12:17:22 AM UTC+2 José Valim wrote:
>>> While some functions in the Stream module may return the `Stream` struct,
>>> you must never explicitly check for the `Stream` struct, as streams
>>> may come in several shapes, such as `IO.Stream`, `File.Stream`, or
>>> even `Range`s.
>>> 
>>> The functions in the Stream module only guarantee to return enumerables
>>> and their implementation (structs, anonymous functions, etc) may
>>> change at any time. For example, a function that returns an anonymous
>>> function today may return a struct in future releases.
>>> 
>>> Instead of checking for a particular type, you must instead write
>>> assertive code that assumes you have an enumerable, using the functions
>>> in the `Enume` or `Stream` module accordingly.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to elixir-lang-core+unsubscr...@googlegroups.com 
> <mailto:elixir-lang-core+unsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/elixir-lang-core/04f579fc-4cd3-4747-81e2-b022e7420546n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/elixir-lang-core/04f579fc-4cd3-4747-81e2-b022e7420546n%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/1C819B6C-BFB2-411D-B1D6-11C163381BC9%40wojtekmach.pl.

Reply via email to