Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 01:14

    SethTisue on main

    remove dead link (compare)

  • Oct 20 20:33
    peter-nuernberg opened #2207
  • Oct 20 20:10
    htmldoug commented #12112
  • Oct 20 20:10
    htmldoug commented #12112
  • Oct 20 20:10
    htmldoug commented #12112
  • Oct 20 18:18

    NthPortal on 2.13.x

    Fix documentation for filter "… Merge pull request #9789 from m… (compare)

  • Oct 20 18:18
    NthPortal closed #9789
  • Oct 20 17:38
    Kordyjan synchronize #1284
  • Oct 20 17:38
    Kordyjan synchronize #1284
  • Oct 20 17:38
    Kordyjan synchronize #1284
  • Oct 20 17:31
    SethTisue labeled #9789
  • Oct 20 17:15
    Kordyjan synchronize #1284
  • Oct 20 17:02
    Kordyjan review_requested #1284
  • Oct 20 17:01
    Kordyjan review_requested #1284
  • Oct 20 17:01
    Kordyjan review_requested #1284
  • Oct 20 17:01
    Kordyjan review_requested #1284
  • Oct 20 17:01
    Kordyjan synchronize #1284
  • Oct 20 17:00
    Kordyjan ready_for_review #1284
  • Oct 20 16:58
    Kordyjan synchronize #1284
  • Oct 20 16:57
    Kordyjan synchronize #1284
Princess | April
@NthPortal
why do collections not have a specificFactory: Factory[A, C] method? it would match fromSpecificIterable well
Li Haoyi
@lihaoyi
Does anyone know if Future#zip being asymmetric in the case of failure is intentional? e.g. given val f3 = f1.zip(f2), if f1 fails and f2 is still running then f3 fails immediately, whereas if f2 fails and f1 is still running then f3 keeps running
the ordering of who-zips-who seems like something that shouldn't matter, but in this case definitely does if I want to e.g. bail out ASAP to report a failure to a user
Sébastien Doeraene
@sjrd
It's probably not intentional. I wouldn't be surprised if it even depends on the version of Scala.
zip should be symmetric.
Li Haoyi
@lihaoyi
looking at the implementation, it's because it's implemented using flatMap, which is naturally asymmetric
should be pretty easy to fix by implementing it using promises I think
Li Haoyi
@lihaoyi
seems like they're all implemented using zipWith
Martijn
@martijnhoekstra:matrix.org
[m]
I wonder whether anyone depends on the behaviour of a.zip(b) running until a finishes and whether you can reasonably call that a bug to be fixed rather than a semantic change
Li Haoyi
@lihaoyi
possibly, but it seems like something that's unlikely to be reliable enough to depend upon. It's not like people know the total ordering of how long their Futures take to run and then ensure they're in the right order before ziping or sequenceing them together
Martijn
@martijnhoekstra:matrix.org
[m]
It's not so unlikely to me there is code out there that makes assumptions like a.zip(b).onComplete(/* assumes a is complete */)Maybe not unlikely enough or broken enough not to stand in in the way of a fix, but still not so unlikely to not take it along as a consideration
Li Haoyi
@lihaoyi
I'll open a PR and include this as a consideration
Li Haoyi
@lihaoyi
here's the strawman PR scala/scala#9655
Jamie Thompson
@bishabosha
enum Color:
  case Red, Green, Blue

When I print the code after pickling, I noticed that the companion Color extends scala.deriving.Mirror.Sum.
However, the following does not pass typecheck:

val x: scala.deriving.Mirror.Sum = Color

Is there a reason for this? I would like to create an extension method that works on enum companion objects, and I would rather have a more narrow upper-bound instead of Any.

@soronpo Mirror parent classes are added to companion objects after type checking, I assume as it is only meant to be an optimisation - the API for mirrors is meant to only be accessed through implicit search

Oron Port
@soronpo
Oron Port
@soronpo
What is the reason enumeration cases cannot have bodies?
Diego E. Alonso Blas
@diesalbla
@soronpo Are you referring to the new Scala 3 enum?
Oron Port
@soronpo
Yes
sinanspd
@sinanspd
At what stage of the compilation are the mixins actually evaluated ?
If I am introducing new syntax to the compiler that "generates" a new type similar to with in A with B, can I safely ignore the occurrence of this inside case class parameters and use the existing paramClauses() and classDef() to parse ? Ideally I would like to address the syntax in the Desugar phase but it seems like case classes go through so much processing that I am not really sure anymore
(assume that the tokens and scanner have been updated to read this syntax)
Martijn
@martijnhoekstra:matrix.org
[m]
How is the dotty documentation like https://dotty.epfl.ch/docs/reference/changed-features/main-functions.html generated?
Felix Bruckmeier
@felixbr
Hi, I have a bug report for Scala 3.0.0 (regarding java compat). Where is the correct place to file this? It's not the same bug tracker as for Scala 2, right?
Seems like lampepfl/dotty is still used even though it's not called dotty anymore.
cmhteixeira
@cmhteixeira

Hello there fellow devs,

I want to share a small library I just published with you.
Its called delegate-macro.
Its is a small macro annotation to automatically delegate/proxy the implementation of an interface to a dependency.
It has been super helpful to me when I have to implement the "delegate pattern" for an interface with dozens of methods.
Maybe you will also find it useful.
I developed against Scala 2. If there seems to be interest, I will hack for Scala 3.

Repo: https://github.com/cmhteixeira/delegate-macro

Guillaume Martres
@smarter
scala 3 doesn't have macro annotations but it has https://dotty.epfl.ch/docs/reference/other-new-features/export.html
sinanspd
@sinanspd

Just out of curiosity, Are CASECLASS & CASEOBJECT worth stating as intro tokens ?

final val templateIntroTokens: TokenSet = BitSet(CLASS, TRAIT, OBJECT, ENUM, CASECLASS, CASEOBJECT)

It seems to me like the token that is captures is CASE which is then unified based on the next token (result of lookAhead())

sinanspd
@sinanspd
never mind. It doesn't compile if I remove them from the set so apparently it is used somewhere. I will go through the code again and try to find it
Rob Norris
@tpolecat
Can someone explain using even smaller words why the match type in this blog post doesn’t reduce? https://twitter.com/scala_lang/status/1402534271600967680?s=21
I don’t understand the error message.
There is a case for B.
I understand the irony of not understanding the error message in a blog post about improved error messages.
Tom Grigg
@griggt
I took it to mean that B cannot be shown to be disjoint from A, but I have no idea what I'm talking about.
Rob Norris
@tpolecat
That’s what it says but why not? X is exactly B which is unrelated to A other than both subtyping Any, which is true of any pair of Scala types.
Martijn
@martijnhoekstra:matrix.org
[m]
I think the point is that there may be some C extends A with B, but I don't understand what the point is anymore
Rob Norris
@tpolecat
But X is B. We know it’s not C.
Tom Grigg
@griggt
yes, it reduces if at least one of A or B is sealed
Martijn
@martijnhoekstra:matrix.org
[m]
there is more documentation on the documentation of match types: https://dotty.epfl.ch/docs/reference/new-types/match-types.html, which mentions
The compiler implements the following reduction algorithm:

If the scrutinee type `S` is an empty set of values (such as Nothing or String & Int), do not reduce.
Sequentially consider each pattern Pi
If S <: Pi reduce to Ti.
Otherwise, try constructing a proof that S and Pi are disjoint, or, in other words, that no value s of type S is also of type Pi.
If such proof is found, proceed to the next case (Pi+1), otherwise, do not reduce.
Rob Norris
@tpolecat
We know B is not a subtype of A.
Why do we care if there may some day be a value that’s both an A and a B?
Match types are absolutely baffling.
Martijn
@martijnhoekstra:matrix.org
[m]
They are covariant in some way it seems
trait Base
class Derived extends Base

type M[X] = X match {
  case Base => Int
  case Derived => String
}

def testit: Int = 7: M[Derived]
this compiles
Rob Norris
@tpolecat
...
ooookay
Martijn
@martijnhoekstra:matrix.org
[m]
😶
Bjorn Regnell
@bjornregnell
Would it be possible to also allow the new control syntax in 2.13.x? if then, while do, for do
Guillaume Martres
@smarter
@tpolecat, it's not very different from term match, if you write case x: Base => ...; case x: Derived => ... you're always going to hit the first case
in fact the whole point is that you can write your term match to mirror your match type
(and give your term match an expected type which is that match type, and have that infer correctly)
and the compiler prevents you from doing the reduction in situations where it cannot know at compile-time which case would be taken at runtime