Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 00:25
    SethTisue converted_to_draft #9677
  • 00:25
    SethTisue commented #9679
  • 00:25
    SethTisue commented #9679
  • Jun 23 22:37
    joroKr21 commented #12422
  • Jun 23 22:37
    joroKr21 commented #12422
  • Jun 23 22:17
    SethTisue demilestoned #9678
  • Jun 23 22:17
    SethTisue closed #9678
  • Jun 23 22:17
    SethTisue commented #9678
  • Jun 23 21:42
    joroKr21 commented #12422
  • Jun 23 21:21
    joroKr21 commented #12422
  • Jun 23 21:21
    pjfanning commented #12422
  • Jun 23 21:15
    joroKr21 commented #12422
  • Jun 23 21:07
    joroKr21 commented #12422
  • Jun 23 21:01
    joroKr21 commented #12422
  • Jun 23 20:50
    SethTisue review_requested #2093
  • Jun 23 20:50
    SethTisue opened #2093
  • Jun 23 20:37
    SethTisue edited #9679
  • Jun 23 20:36
    SethTisue commented #9678
  • Jun 23 20:36
    SethTisue commented #9678
  • Jun 23 20:35
    SethTisue commented #9678
Seth Tisue
@SethTisue
Luis Miguel Mejía Suárez
@BalmungSan
:tada:
gitleet
@gitleet
I'm confused, why does typesafe config return back java collections?
Luis Miguel Mejía Suárez
@BalmungSan
Well mostly because is a Java library.
gitleet
@gitleet
:) ok the typesafe namespace got me confused
Luis Miguel Mejía Suárez
@BalmungSan
The good news is that transforming a Java collection into a Scala one is pretty easy thanks to the CollectionConverters in the stdlib :)
Matt Hicks
@darkfrog26
@gitleet typesafe-config is pure evil. :-p
Luis Miguel Mejía Suárez
@BalmungSan
You may also want to give a look to pureconfing which is a Scala wrapper over typesafe config.
Matt Hicks
@darkfrog26
I'd recommend Profig or PureConfig (the former being better because I wrote it). :-p
Oh, and Profig doesn't rely on typesafe-config
I'm honestly surprised that typesafe-config is still so widely used
Rob Norris
@tpolecat
I have had pretty good luck with Ciris.
Matt Hicks
@darkfrog26
I've actually never used that one
at first glance it looks a bit complicated
seems a bit problematic that it has custom types
like their enum support
Rob Norris
@tpolecat
It works great.
Matt Hicks
@darkfrog26
@tpolecat thanks, I made a note to look into it further later. :)
econoraptor
@econoraptor
What's the proper way to get from a type to its corresponding class in a macro? I'm trying this, but the TypeDef invocation results in a MatchError on macro expansion TypeDef(TypeRepr.of[T].classSymbol.get)
Seth Tisue
@SethTisue
@econoraptor what if the type doesn't have a corresponding class?
@econoraptor is this Scala 2 or 3, by the way?
econoraptor
@econoraptor
I'm assuming that's why classSymbol is an option. In this specific case it does have a class
scala 3
Seth Tisue
@SethTisue
oh, I only know macros in 2. maybe someone else can help
gitleet
@gitleet

I'm honestly surprised that typesafe-config is still so widely used

probably b/c playframework ships with it

Rob Norris
@tpolecat
I think Akka also uses it.
Eric K Richardson
@ekrich
Scalafmt uses it or sconfig
Nathan Fischer
@nrktkt:matrix.org
[m]
what are the issues with typesafe/lightbend config?
I know a few things I'd like to improve, but nothing really bad comes to mind
gitleet
@gitleet
I don't like how it returns java collections by default....
Rob Norris
@tpolecat
I don’t like how it uses config files.
1 reply
Seth Tisue
@SethTisue
unless you take Rob's position, HOCON seems quite nice to me
Luis Miguel Mejía Suárez
@BalmungSan
I believe I understand Rob's point. All my HOCONS are just redirects to env vars or constants.
So the config file just becomes more work to maintain and extra source for bugs.
Like having runtime errors because I had a typo in the HOCON file.
I want to try ciris, but it is in the bottom of my TODO list.
Jim Newton
@jimka2001

I am using a library function which I didn't write which as an argument of type => Any. I'd like to prepend some action before and after the object passed to that function. How can I do that?
Here is what I've tried, but it doesn't work.

class MyFunSuite extends AnyFunSuite {
  import org.scalactic.source
  import org.scalatest.Tag
  override def test(testName: String, testTags: Tag*)(testFun: => Any /* Assertion */)(implicit pos: source.Position):Unit = {
    lazy val action = locally{
      println("[ starting " + testName)
      try{      testFun }
      finally{ println("] finished " + testName)}
    }
    super.test(testName,testTags : _*)(action)(pos)
  }
}

When I run my test case I see output like the following which (I believe) means the finally is executed before the testFun

[ starting subclass
] finished subclass
[ starting disjoint
] finished disjoint
[ starting disjoint and subtype
] finished disjoint and subtype
[ starting randomizer
] finished randomizer
[ starting test 1
] finished test 1
[ starting typep
] finished typep
[info] GenusBddTest:
[info] - subclass
[info] - disjoint
[info] - disjoint and subtype
[info] - randomizer
[info] - test 1
[info] - typep
Jim Newton
@jimka2001
The problem is that I have a test which gives an out-of-heap-space error. And if [info] is printed after the test finishes, then the [info] for the problematic test never gets printed.
Alessandro
@ImGrayMouser_twitter

@BalmungSan

They are mutable, they are invariant, they do not have a pretty toString nor a sensible equals

In such a case why the Scala library allows to have Set[Array[A]] when we know upfront that it won't just work ? It's a wrong. At least it must force us to provide a working equal or hashcode or whatever the Set implementation is using under the hood

Jim Newton
@jimka2001
copying the locally{....} directly into the call to super.test(...)(locally{....})(pos) seems to do a better job. At least I can see that it runs the test between printing starting and finished however, it still prints all the [info] lines after all the tests have run.
Jim Newton
@jimka2001
can anyone tell me whether the java reflection API will allow me to somehow walk the subclasses of a given class?
I have some code which tries to reason about whether two given classes (i.e., objects of class java.lang.Class) are disjoint (i.e., have no common subclass) . Currently I'm supposing that a class such as java.lang.Number is not necessarily disjoint from myTrait because it is possible to to create a subclass of Number like this abstract class Xyz extends java.lang.Number with myTrait.
However, if I could detect that that has not occurred, i.e., there is no common subclass of myTrait and java.lang.Number (which is the case 99.9999% of the time), then there is a significant optimization I could make in my data structure.
Rob Norris
@tpolecat
Not in general, no. A program can load classes over the network for example. There’s no way in general to know what’s out there.
It sounds like a design problem.
Jim Newton
@jimka2001
I found this, but I don't know enough about java to know whether it is what I want or not https://www.javadoc.io/doc/org.reflections/reflections/0.9.10/org/reflections/Reflections.html
@tpolecat as far as Java is concerned are these two questions the same? 1. does there currently in VM exist a subclass of a given class X, and 2) does there exist a class which I have not loaded yet which would be a subclass of X if it ever gets loaded? For example in CLOS those are two different questions, the first is answerable, the second is not.
Jim Newton
@jimka2001

If I want to experiment with: https://www.javadoc.io/doc/org.reflections/reflections/latest/org/reflections/Reflections.html is there a way to update my build.sbt file to include the library? I tried the following, but it doesn't work

libraryDependencies += "org.reflections" %% "Reflections" % "0.9.12"

I see the following when I try to start sbt:

[warn]     module not found: org.reflections#Reflections_2.13;0.9.12
[warn] ==== local: tried
[warn]   /Users/jnewton/.ivy2/local/org.reflections/Reflections_2.13/0.9.12/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/org/reflections/Reflections_2.13/0.9.12/Reflections_2.13-0.9.12.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   /Users/jnewton/.sbt/preloaded/org.reflections/Reflections_2.13/0.9.12/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:////Users/jnewton/.sbt/preloaded/org/reflections/Reflections_2.13/0.9.12/Reflections_2.13-0.9.12.pom
[warn]     ::::::::::::::::::::::::::::::::::::::::::::::
[warn]     ::          UNRESOLVED DEPENDENCIES         ::
[warn]     ::::::::::::::::::::::::::::::::::::::::::::::
[warn]     :: org.reflections#Reflections_2.13;0.9.12: not found
[warn]     ::::::::::::::::::::::::::::::::::::::::::::::
I see the library exists in https://repo1.maven.org/maven2/org/reflections/reflections/0.9.12. but not sure what syntax to use in the build.sbt file.
Jim Newton
@jimka2001
Seems to work if I replace %% with %.
Rohan Sircar
@rohan-sircar
%% appends the project scala version to the end of the dependency name
so for java libs it should be single %