This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private type H[A <: BSONValue, B] = BSONHandler[A, B] | |
private type DH[A] = BSONDocumentHandler[A] | |
object Implicits extends BSONConverter with DaoToDocDerivation { | |
private implicit def `(A, B) <-> BSON`[A <: BSONValue, B, C <: BSONValue, D](implicit hab: H[A, B], hcd: H[C, D]): DH[(B, D)] = handler[Tuple2[B, D]] | |
private implicit def `Coll[A] <-> BSON`[A[_], B](implicit h: H[_ <: BSONValue, B], cbf: CanBuildFrom[A[_], B, A[B]], ev: A[B] <:< Traversable[B]): H[BSONArray, A[B]] = | |
BSONHandler(bsonArrayToCollectionReader[A, B].read, collectionToBSONArrayCollectionWriter[B, A[B]].write) | |
private implicit def `Map[A, B] <-> BSON`[A, B](implicit htab: DH[(A, B)]): H[BSONArray, Map[A, B]] = | |
`Coll[A] <-> BSON`[Vector, (A, B)].as(_.toMap, _.toVector) | |
private implicit def `Set[A] <-> BSON`[A](implicit htab: H[_ <: BSONValue, A]): H[BSONArray, Set[A]] = |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Welcome to Scala 2.12.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_162). | |
Type in expressions for evaluation. Or try :help. | |
scala> case class Meep(msb: Long, lsb: Long) | |
defined class Meep | |
scala> case class Moop(value: Meep) extends AnyVal | |
defined class Moop | |
scala> case class Whee(moop: Moop, whoop: String) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Locale; | |
public enum EBoolA { | |
FALSE, | |
NULL, | |
TRUE; | |
public static final int fromBool(Boolean b) { | |
for (EBoolA mb : values()) { | |
StringBuilder sb = new StringBuilder(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[error] Unexpected internal error near index 1 | |
[error] \ | |
[error] ^ | |
[error] java.util.regex.Pattern.error(Pattern.java:1955) | |
[error] java.util.regex.Pattern.compile(Pattern.java:1702) | |
[error] java.util.regex.Pattern.<init>(Pattern.java:1351) | |
[error] java.util.regex.Pattern.compile(Pattern.java:1028) | |
[error] java.lang.String.split(String.java:2380) | |
[error] java.lang.String.split(String.java:2422) | |
[error] org.specs2.io.DirectoryPath$.unsafe(DirectoryPath.scala:113) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_80). | |
Type in expressions for evaluation. Or try :help. | |
scala> object Meep { val meep = "meep" } | |
defined object Meep | |
scala> class Moop { def x = null.asInstanceOf[Meep.type].meep } | |
defined class Moop | |
scala> new Moop().x |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
scala> val argl = collection.mutable.HashSet[Int]() | |
argl: scala.collection.mutable.HashSet[Int] = Set() | |
scala> val bargl = collection.mutable.HashSet[Int]() | |
bargl: scala.collection.mutable.HashSet[Int] = Set() | |
scala> (1 to 100).foreach(argl += _) | |
scala> argl.foreach { n => if (n % 10 == 0) argl += n * 100; bargl += n } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
scala> null.asInstanceOf[android.media.MediaRecorder].AudioSource.MIC | |
res0: Int = 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Meep[A, B](b: B) { def meep(a: A, f: B => B): Option[(B, B)] = Some(b, f(b)) } | |
class Moop extends Meep[Int, String]("meep") { def meep(a: Int)(f: String => String): Option[String] = super.meep(a, f).map(_._2) } | |
println(new Moop().meep(42, identity).map(_._2)) //witness ClassCastException |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
implicit class RichTraversable[A, C[B] <: TraversableLike[B, C[B]]](val wrapped: C[A]) extends AnyVal { | |
def splitBy(p: A => Boolean)(implicit cb: CanBuild[Either[C[A], C[A]], C[Either[C[A], C[A]]]]): C[Either[C[A], C[A]]] = { | |
val builder = cb() | |
@tailrec def spanNext(as: C[A]): Unit = | |
if (as.nonEmpty) { | |
val ph = p(as.head) | |
val (append, remaining) = as.span(a => p(a) == ph) | |
builder += (if (ph) Right(append) else Left(append) : Either[C[A], C[A]]) | |
spanNext(remaining) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.scalacheck._, Prop.forAll, Gen._, Arbitrary._ | |
object MeepSpec extends Properties("Meep") { | |
case class Meep(id: Int, name: String) | |
implicit lazy val arbMeep: Arbitrary[Meep] = Arbitrary(for (i <- arbitrary[Int]; n <- alphaStr) yield Meep(i, n)) | |
// using ScalaCheck 1.12.5, this outlandish property would have passed: | |
property("meep1") = forAll { (f: Meep => Meep, m1: Meep, m2: Meep) => f(m1) == f(m2) } | |
// using ScalaCheck 1.13.0, we have to define how function input influences function output via an instance of Cogen: |
NewerOlder