Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 15:56
    odersky assigned #15997
  • 15:55
    odersky assigned #15997
  • 15:43

    dwijnand on main

    Fix tuple casting Was truncati… Fix tuple casting (#16113) (compare)

  • 15:43
    dwijnand closed #16104
  • 15:43
    dwijnand closed #16113
  • 15:42
    dwijnand commented #16051
  • 15:35
    mbovel synchronize #16135
  • 15:30
    szymon-rd commented #15296
  • 15:20
    dwijnand edited #16135
  • 15:16
    dwijnand edited #16135
  • 15:16
    dwijnand edited #16135
  • 15:05

    mbovel on main

    Type match with a match type wh… Type match with a match type wh… (compare)

  • 15:05
    mbovel closed #15599
  • 15:05
    dwijnand assigned #16066
  • 15:05
    dwijnand assigned #16135
  • 15:05
    dwijnand assigned #16111
  • 14:57
    smarter unassigned #16042
  • 14:57
    smarter assigned #16042
  • 14:56
    szymon-rd synchronize #15296
  • 14:48
    Sporarum synchronize #15993
odersky
@odersky
The docs about meta programming are currently outdated. @biboudis and @nicolasstucki are preparing new docs.
Andriy Plokhotnyuk
@plokhotnyuk
:+1:
Rich
@Rich2
I was looking at the doc on Typeclass derivation and there didn't seem to be any facility for ad-hoc sum types.
Matthew Pocock
@drdozer
hey - just wondering - is there a reason that postfix decorator syntax works only on single values, and not on full argument lists?
trait PdbColumn[C[_], T] {
  def (charStart: Int, charEnd: Int, field: String, definition: String) col[T]: C[T]
}
So I can't do this, sadly
The hack is:
trait PdbColumn[C[_], T] {
  def col[T](charStart: Int, charEnd: Int, field: String, definition: String): C[T]
  def (ts: Tuple4[Int, Int, String, String]) col[T]: C[T] = col[T](ts._1, ts._2, ts._3, ts._4)
}
Alessandro Vermeulen
@spockz
It seems that the link to multiversal equality on the homepage is broken: http://dotty.epfl.ch/docs/reference/other-new-features/multiversal-equality.html << gives a 404}
PR to update broken links are welcome
Xavier GUIHOT
@xavierguihot
Hi, playing with the new parameter untupling feature; any plans to also have the possibility to do this in the future?
def f(a: Int, b: Int): Int = a * b
List((1, 2), (3, 4)).map(f(_, _ * 2))
Guillaume Martres
@smarter
good question, I'm not sure
odersky
@odersky
No, that can’t work. _ is used on two different levels here. So its translation is
x => f(x, y => y * 2))
Guillaume Martres
@smarter
ah right
Ghost
@ghost~54f4b69115522ed4b3dcb16d
I'm happy that in Scala 3, underscore still has levels. Is it too late to propose double-underscore syntax __ * 2 to mean expanding to the next enclosing Expr? Inductively for ___ and up, of course. I guess that would make arbitrarily long underscores reserved. That's OK, because then usage of case _________ => for alignment purposes can be more narrowly defined for the default case.
Soren
@srnb_gitlab
I'd be a fan of expanded underscore
Harrison Houghton
@hrhino
What about requesting no underscore? So you have something like case if ... =>
:D
Martijn Hoekstra
@martijnhoekstra
you just repeat the no underscore to mean expanding to the next Expr?
I like that
Ghost
@ghost~55118a7f15522ed4b3ddbe95
@hrhino why stop there m match { x => ...; if p => ...; Some(y) => ... }
Ghost
@ghost~54f4b69115522ed4b3dcb16d
@hrhino I can't tell if you're getting my goat. scala/scala#6241
Harrison Houghton
@hrhino
I'm getting your goat, but in a sympathetic way.
I did see that PR.
Ghost
@ghost~54f4b69115522ed4b3dcb16d
@hrhino then you meant GOAT.
Denis Rosset
@denisrosset
Small question: how well do inline and @specializedplay together? I wrote a small library for specialized collections and used macro trickery to escape most specialization problems ( https://github.com/denisrosset/metal -- warning the macro use is quite gross).
Guillaume Martres
@smarter
Right now there is zero support for @specialized in Dotty
Denis Rosset
@denisrosset
Now, I'd like to see how inline can improve over that; but it seems to be applied at a stage where specialization cannot be recovered.
OK! thanks
So I'll stop looking.
Guillaume Martres
@smarter
And no immediate plan to bring it back
because it's a huge mess
method specialization is OK, but specializing non-final classes is really hard and even after years of work not completely correct in Scala 2
I'm assuming you're looking at this for Spire ? What kind of specialization do you use ? Have you checked how much it's still needed when using Graal for example ?
Denis Rosset
@denisrosset
Yes it is.. what I did in metal was to have nonspecialized traits, but specialized methods... so you call (set: MySet[A]).contains[A](a), where the first type parameter is nonspecialized (MySet[A]), but the magic happens in the def contains[@specialized B](b: B). The macro system is there to put the right type parameters.
My immediate problem with Scala specialization was that Map[@sp A, @sp B] fails to specialize for e.g. Map[AnyRef, Int].
Guillaume Martres
@smarter
that's interesting
Denis Rosset
@denisrosset
Spire behaves better in that respect: it's often pretty clear which type parameters would be scalars, and then we specialize only those.
But indeed, Spire on Dotty is an interesting thought. I have a talk at the ScalaDays about Spire generic approach. I haven't tried Dotty on it, neither Graal, that's an excellent suggestion.
Guillaume Martres
@smarter
Given your experience, it'd be great if you could write up what you think the compiler should provide in terms of specialization
maybe as a starting point for a discussion on https://contributors.scala-lang.org/
Denis Rosset
@denisrosset
Let me think of it. Will you be there at the Scala Days?
Guillaume Martres
@smarter
yep!
it's basically happening in my backyard so hard to miss it
Denis Rosset
@denisrosset
Ha!
I wonder if I'll have time to deeply think about specialization till the conference .. anyway, I'll dig into the generated bytecode, assembly for numerical code. While the presentation won't address specialization directly, it will give us food for thought!
Guillaume Martres
@smarter
sounds good!
Matthew Pickering
@mpickering
Does anyone know why the type representation is indexed by a type rather than its kind? How does the type system ensure that type splices are well-typed?
Dermot Haughey
@hderms
is it likely dotty will actually be faster to compile than scala 2?
Guillaume Martres
@smarter
right now they're about the same speed