Well, for a stream you are still traversing everything, then I guess it makes sense to be linear. I guess the benefit is not having to allocate a new data structure. Once again we will need two algorithms, depending if the end is before or after start. If before, you need to accumulate until you find the slice, then you emit the slice, emit the accumulator, and then continue as usual. If after, you need to emit everything, until start, then accumulate the slice, and emit everything as necessary. So both operations will require you to buffer, the amount of buffered content depends on the end position.
On Sat, Sep 4, 2021 at 7:34 PM [email protected] <[email protected]> wrote: > > > On Saturday, September 4, 2021 at 7:21:45 PM UTC+2 José Valim wrote: > >> It could definitely be implemented as a Enum or a Stream function, but >> the level of complexity is definitely much higher, and reduce would force >> the implementation to be linear anyway. So I am honestly not sure if it is >> worth it. >> > > The main part of the algorithm could be written using a couple of calls to > `Enum(erable).slice`. In this case, at least as long as the number of > elements to be moved is small, the implementation is faster than linear > (for types that support faster than linear slicing). > > That is, until we concatenate the results at the end to form the rotated > list. So at most it is an efficiency improvement of a constant factor, but > the result will still be linear. > Hmm... > > -- > 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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-core/d54e1e48-a32c-4d9c-8307-d5cb7926050cn%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/d54e1e48-a32c-4d9c-8307-d5cb7926050cn%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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2B0ChpiFZLphJX-BAtyQC%2BwnMTN_X9-FRDHm%2BfmxMv3wA%40mail.gmail.com.
