I cannot find a Scala collection that is a subtype of
LinearSeq, and that gets recomputed each time it is accessed…
It would be similar to
LazyList, except without memoization. It would also be similar to
Iterator, but with the ability to take the head and tail, and to prepend a new element.
Am I missing something?
It seems fs2
Stream is what you want.
scala.collection.View probably does everything you asked, except that it’s not a subtype of
The only thing that is not completely straightforward is prepending. There is a
Prepended implementation of
View, but for some reason there is no prepend operation that actually uses that class… So you can do
View(x) ++ view or perhaps call
Prepended(x, view) directly.
Do you mean this? Hmm, it seems to be a completely separate system from the Scala standard library. It doesn’t extend
LinearSeq, or even
It does look really nice. But I just want something simple right now, rather than having to learn a new language and rewrite all my code.
Yeah, I saw that
View is not a subtype of
LinearSeq. This, and particularly the lack of
+: is a deal breaker for me.
It is odd that the standard library is missing what is arguably one of the simplest and most natural collection types.