Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Princess | April
    @NthPortal
    did Spandex ever make it in? and if so, what did it end up being named?
    Odd Möller
    @odd
    Hi @NthPortal, Spandex didn't make it, but its new name ArraySeq did, but it was ImmutableArray that got that name instead however. I described the current status of Spandex in the original PR #52.
    Matthew de Detrich
    @mdedetrich
    Why is this collection called a Spandex, isn’t this what women wore in the 90’s when going to the gym?
    Odd Möller
    @odd
    @mdedetrich the name Spandex was chosen to signal the expansive nature of the data structure (as opposed to the static nature of the immutable array it was developed as an alternative to), but it does not google well and with the relation to “expand” being less than obvious, the name was later changed to ArraySeq (which was then used as the name of the immutable array in 2.13).
    Princess | April
    @NthPortal
    with the new LazyList suggested by Sébastien, there's significantly less shared structure between Stream and LazyList, and I'm wondering if it makes sense for them to share an Ops trait anymore
    Harrison Houghton
    @hrhino
    It doesn't really IMO
    I ran into that while poking at that issue.
    I almost think Stream should just be a copy-paste of the 2.12 one, with whatever changes are needed to fit it into the new design.
    Princess | April
    @NthPortal
    I'm honestly thinking that as well
    Matthew de Detrich
    @mdedetrich
    Agreed, Stream is going to be deprecated anyways so too much effort shouldn’t be spent on it
    Harrison Houghton
    @hrhino
    git log shows that at one point it (LazyList) was indeed implemented as sjrd suggests, and it was changed to its current implementation later on, apparently to unify it with Stream. So there's that.
    Princess | April
    @NthPortal
    do you happen to have the commit hash for that? because that could potentially save us a LOT of work
    Harrison Houghton
    @hrhino
    pretty sure it's scala/scala@c4ef58c
    Julien Richard-Foy
    @julienrf
    IIRC we had some issues with this design, that’s why we changed it afterwards. But maybe the issue was just that the signature of the force method was not correct, it should return this.type instead of a LazyList.Evaluated[A].
    Seth Tisue
    @SethTisue

    I almost think Stream should just be a copy-paste of the 2.12 one, with whatever changes are needed to fit it into the new design.

    me three, that it’s always made me nervous that Stream was reimplemented rather than just carried over

    Princess | April
    @NthPortal
    I will look into copying over 2.12's Stream, and simplifying LazyList then (unless you want to @hrhino)
    nafg
    @nafg
    @SethTisue weren't most things reimplemented?
    Princess | April
    @NthPortal
    @nafg not really. core types like List, Vector, etc. have pretty much the same underlying implementations
    nafg
    @nafg
    meaning the way data is modeled? So what was changed with Stream?
    Princess | April
    @NthPortal
    it and LazyList share an implementation via LazyListOps
    Harrison Houghton
    @hrhino
    @NthPortal I wanted to but I'm in a bit of an OSS slouch right now and you've got far more knowledge of the 2.13 collections than I; so if you want to pick it up, feel free (please!)
    Stefan Zeiger
    @szeiger
    Stream was reimplemented from scratch. We only had the new LazyList at first and because Stream is such a special case in the old collections due to the laziness it appeared easier to modify LazyList than to port the old code. I don't remember any particular difficulties doing that, it was indeed quite easy. If you want to replace LazyList with a completely new impementation I'd factor the shared parts in LazyListOps back into Stream and use that for 2.13.
    Princess | April
    @NthPortal
    my LazyList PR is getting close (though still has a few things to iron out). For those invested in the new LazyList design, I would love some initial feedback, so I can incorporate any needed changes as soon as possible, and we can get the lazier design in quickly
    Martijn Hoekstra
    @martijnhoekstra
    If I have a scala method that has a varargs parameter, and I want to pass through java varargs from a java method, what's a way to do that that's compatible with 2.12 and 2.13?
    IOW, how do I write a java varargs forwarder to a scala varargs methods that works for 2.12 and 2.13
    Harrison Houghton
    @hrhino
    does @varargs not work for you?
    Stefan Zeiger
    @szeiger
    Not sure I understand. Are you writing the forwarder in Java? If it's in Scala then how do you end up creating a Java-varargs method without an auto-generated forwarder? If you're implementing a Java interface in Scala you use Scala varargs and the compiler generates a bridge method.
    Martijn Hoekstra
    @martijnhoekstra
    I'm attempting to write a java wrapper class that I want to wrap (among other things) a scala method with varargs
    Matthew Rooney
    @javax-swing
    @martijnhoekstra IIRC scala var args compile into scala.collection.Seq. so you can use one of the methods on scala.collection.JavaConverters to convert your java varargs into a seq
    Sébastien Doeraene
    @sjrd
    @nafg I'm on vacation until August 12. I will have a look at the LazyList PR after that.
    nafg
    @nafg
    @sjrd was that intended for someone else?
    Julien Richard-Foy
    @julienrf
    @NthPortal I guess?
    Princess | April
    @NthPortal
    I would love the feedback. unfortunately, the deadline is August 10
    Sébastien Doeraene
    @sjrd
    Ah well, it's going to be without me, then.
    Stefan Zeiger
    @szeiger
    FYI: I'll be on vacation until September 2
    Ichoran
    @Ichoran
    Me too, but it matters much less :)
    Matthew de Detrich
    @mdedetrich
    @Ichoran @szeiger This may sound like a really dumb question, but it appears that .hashCode doesn’t respect equality as it should since it takes into account order
    This is wrt Map/VectorMap etc
    Actually nvm found it
    Ichoran
    @Ichoran
    Yeah, you have to use the (not very awesome) Map hash routine instead of the (pretty decent) Seq one.
    Princess | April
    @NthPortal
    why does LinearSeqOps#tail return LinearSeq and not C?
    Princess | April
    @NthPortal
    thoughts on the following unfoldLazy definition for the LazyList companion?
    def unfoldLazy[A, S](init: => S)(f: S => Option[(() => A, () => S)]): LazyList[A]
    Matthew Rooney
    @javax-swing
    @NthPortal is there much point in the state being returned from the unfold function being lazy? Is there an issue this is linked to? I can see the benefit of A.
    Since you need to S to evaluate the next tail
    Princess | April
    @NthPortal
    @javax-swing I don't know how valuable S being lazy is. But I don't see any reason to evaluate the next S if you never evaluate the next tail
    Matthew Rooney
    @javax-swing
    @NthPortal Ah yeah I guess so
    Harrison Houghton
    @hrhino
    Does init need to be by-name?
    Princess | April
    @NthPortal
    I don't know
    is there a reason for LazyList to have a fromIterator method, on top of from(IterableOnce)?