Michael Pilquist
Michael Pilquist
Yeah, biggest reason is Scala.js, where we can't sneak a call in to `Await.result`. Scala.js support should be easy to add, though it would add some build complexity. I'm looking...
@steinybot Unfortunately, that technique suffers from the same problem as `Await.result` when running on Scala.js -- since there's only 1 thread of execution, the call to `Await.{result,ready}` will fail. Would...
@steinybot Nice! I started something today too: https://github.com/hedgehogqa/scala-hedgehog/compare/master...mpilquist:wip/effectful-props?expand=1
In my case, I'd be using `cats.effect.IO` and integrating it with `munit` -- basically building off `PropertySuite` here: https://github.com/scodec/scodec-bits/blob/topic/munit/core/shared/src/test/scala/scodec/bits/PropertySuite.scala I haven't thought too much about runner support as I only...
I'm not certain we need stack safety. Non-identity effects will bring their own stack safety (e.g. Future and IO). We just need to make sure the default `check` function uses...
@steinybot Can I help to get this one over the finish line?
@steinybot Thanks - I sent a PR to your fork but it’s major wip and I need a break from stack safety issues. :) Feel free to take as little...
One thing `Vector` solves is the need for an immutable & persistent collection, *in the standard library*, with O(eC) random access. Immutable arrays work nicely if you don't need persistence...
Yep, structural sharing. If I recall correctly, `Vector` is implemented with structural sharing but duplicates the path from root. So for example, a vector of size
Should be any change -- e.g., given a vector of >= 1024 elements, updating an arbitrary index (e.g. `val w = v.updated(500, 0)`) should result in `w` sharing 31 of...