Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 09:59
    lrytz commented #9388
  • 09:59
    lrytz assigned #9388
  • 09:38
    lrytz commented #9258
  • 09:34

    lrytz on 2.13.x

    Deprecate calling a type `?` wi… Merge pull request #9626 from s… (compare)

  • 09:34
    lrytz closed #9626
  • 09:26

    lrytz on 2.13.x

    enable fatal warnings in manual… Merge pull request #9627 from S… (compare)

  • 09:26
    lrytz closed #9627
  • 09:23
    unkarjedy commented #12340
  • 08:45
    lrytz commented #9542
  • 08:33
    lrytz auto_merge_enabled #9627
  • 08:33
    lrytz synchronize #9627
  • 08:32
    lrytz auto_merge_enabled #9626
  • 08:32
    lrytz synchronize #9626
  • 08:07
    RafalSumislawski commented #9625
  • 08:00
    lrytz commented #8365
  • 07:45
    RafalSumislawski commented #9625
  • 07:45
    RafalSumislawski commented #9625
  • 07:29
    dwijnand commented #9625
  • 07:22
    dwijnand commented #1407
  • 07:14
    RafalSumislawski commented #9625
multibot1
@multibot1
def m[A]: Int at line 22
have same type after erasure: ()Int
object O { def m = 1; def m[A] = 2 }
nafg
@nafg
Anyway if you have a type argument and it doesn't appear anywhere else in the signature something is fishy
Usually a type parameter should appear in the types of a value parameter or in the return type
Otherwise what does it accomplish
moritz bust
@busti

Superclass:

  def foo[A <: Int](bar: A): String = s"Something: $bar"

Subclass:

  override def foo[A <: Int] = s"Something Else: $bar" // Works
  override def foo = s"Something Else: $bar" // Doesnt work
nafg
@nafg
And if it does appear in a value parameter or the return type, then you need to repeat it in the override so that you can refer to it there
That doesn't work
! class A { def fooA <: Int: String = s"Something: $bar" }; class B extends A { override def foo[A <: Int] = s"Something Else: $bar" }
multibot1
@multibot1
error: not found: value bar
class A { def foo[A <: Int](bar: A): String = s"Something: $bar" }; class B extends A { override def foo[A <: Int] = s"Something Else: $bar" }
^
nafg
@nafg
@Busti you need to repeat (bar: A)
And you can't without having a "local" A
namely the type parameter
moritz bust
@busti
Yes, I am sorry, the parameter list is supposed to be there...
Just the return type annotation is supposed to be gone.
nafg
@nafg
In this particular case that's safe
Again, that's the whole point. You need "A" to mean something for bar
Rob Norris
@tpolecat
The type signature for overridden methods isn't redundant in general. In the presence of overloading you can't be sure which version you're talking about.
moritz bust
@busti
The return type uses a globally defined generic. It makes sense to me now. The thing is that the method I am working with is parameterless.
The declared generic is actually only used in the return type, which is inferred.
Rob Norris
@tpolecat
Also an override can narrow the return type so that part is never redundant.
nafg
@nafg
@Busti can you show the real version?
Rob Norris
@tpolecat
In Java you can widen parameter types when overriding but Scala doesn't let you. Not sure why.
moritz bust
@busti

The actual method is abstract:

def handle[E >: Event]: (M, E) => M

And I am implementing it like this:

def handle[E >: Event] = ???
nafg
@nafg
How is it inferred
BTW shouldn't that be <: ?
Rob Norris
@tpolecat
E is in contravariant position in the return type so that might make sense.
moritz bust
@busti

How is it inferred

Maybe that was the wrong term

BTW shouldn't that be <: ?

Thats what I am was thinking too, but the compiler says something else.

Ryan Williams
@ryan-williams

cross-posting from shapeless room since i think it's a more general scala question:

i want to make a typeclass that only exists for type-constructors of nested-Seqs, e.g. Id, Seq, λ[A => Seq[Seq[A]]], etc.

import shapeless.{ Lazy, the }
sealed trait IsSeqs[R[_]]
object IsSeqs {
  implicit val id: IsSeqs[Id] = ???
  implicit def rec[R[T]](implicit r: Lazy[IsSeqs[R]]): IsSeqs[λ[ASeq[R[A]]]] = ???
}
the[IsSeqs[Id]]  // compiles
IsSeqs.rec[Id]   // compiles
the[IsSeqs[Seq]]  // could not find implicit value for parameter t: IsSeqs[Seq]
the[IsSeqs[λ[ASeq[Id[A]]]]]  // could not find implicit value for parameter t: IsSeqs[[A]Seq[A]]

any ideas why the last two lines don't compile?

afaict it seems like typeclass-derivation just doesn't "work" in the presence of type-lambdas…

sken
@sken77
wrote an implementation for Schnorr Signatures on the secp256k1 in scala using cats/scodec
this is the first working version. so i still need to work on a couple of things like improve the types of the primitives and add more tests
if any want to check it out and leave comments/review please open an issue ticket :)
arunsumbria
@arunsumbria
hi i am new to spark, i installed spark on windows 10 , when using below command its showing path dosent exist, i have winutils too under c drive
 val df = spark.read.csv("file:///C:/spark/myprog/emp")
org.apache.spark.sql.AnalysisException: Path does not exist: file:/C:/spark/myprog/emp;
i have provided 777 permission to c:\tmp\hive
vijendra singh
@viju0731_twitter
How do i call object from parent class to child class
?
aby idea. i know how to call methods but when i am trying same way for object objectname extends
it is not working for me
Rob Norris
@tpolecat
can you create a minimal example that demonstrates what you're trying to do?
Dominic Egger
@GrafBlutwurst
Hi everyone. So I have a REST API that guarantees idempotence and I want to do a local trivial fixed size cache. what's the smartest way to keep this RT? State?
Fabio Labella
@SystemFw
@GrafBlutwurst Ref + IO
possibly behind a final tagless api to not expose implementation details
State can't deal with concurrent state, so you can't do (most types of) caching with it
Dominic Egger
@GrafBlutwurst
yeah that's what I'm doing anyway I don't want to expose the caching to external user except size
ah I see