Skip to content

Instantly share code, notes, and snippets.

@nrinaudo
nrinaudo / Implicits.scala
Created Jul 1, 2017
Shows how implicit name conflicts even if types don't
View Implicits.scala
object a1 {
implicit val foo: Int = 1
}
object a2 {
implicit val foo: String = "foo"
}
{
import a1._, a2._
@nrinaudo
nrinaudo / Demo.scala
Created Mar 5, 2017
Non-final case classes
View Demo.scala
case class Foo(a: Int)
class Bar(a: Int, b: Int) extends Foo(a)
// Returns false
new Bar(1, 2) == new Bar(2, 2)
// Returns true!!
new Bar(1, 2) == new Bar(1, 3)
View Repr.scala
import org.scalatest.FunSuite
import org.scalatest.prop.GeneratorDrivenPropertyChecks
import java.text.SimpleDateFormat
import java.util.{Date, Locale}
import org.scalacheck._
class Repr extends FunSuite with GeneratorDrivenPropertyChecks {
implicit val cogenDate: Cogen[Date] = Cogen(_.getTime)
implicit val formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz", Locale.ENGLISH)
@nrinaudo
nrinaudo / _config.yml
Created Jun 6, 2016
Jekyll sort on `sort` field issue
View _config.yml
markdown: kramdown
highlighter: rouge
collections:
tut:
output: true
View ImplicitConflict.scala
import ops1._
import ops2._
object ops1 {
implicit class TestOps(val str: String) {
def op1: String = str
}
}
object ops2 {
View Decoder.scala
package foo
trait Decoder[E, D] {
def decode(e: E): D
}
View Documents.scala
// Represents a named collection of documents of type A
trait Documents[A] {
def name: String
def take(target: Int): Documents[A]
// [...]
}
// Represents a collection of named collections of documents.
// A is the type of a document, D that of a named collection of documents
@nrinaudo
nrinaudo / gist:d13bea758bc7c2d7d078
Created Nov 7, 2015
export-hook NPE stack trace
View gist:d13bea758bc7c2d7d078
> last core/compile:compile
[debug]
[debug] Initial source changes:
[debug] removed:Set()
[debug] added: Set()
[debug] modified: Set()
[debug] Removed products: Set(/Users/nicolasrinaudo/dev/nrinaudo/tabulate/core/target/scala-2.11/classes/tabulate/RowDecoder$$anonfun$tuple3$1.class, /Users/nicolasrinaudo/dev/nrinaudo/tabulate/core/target/scala-2.11/classes/tabulate/RowDecoder$$anonfun$caseDecoder20$1$$anonfun$apply$198$$anonf$$$$84a54a79d7c6b00e342f21de72f88d9$$$$$211$$anonfun$apply$212$$anonfun$apply$213$$anonfun$apply$214$$anonfun$apply$215.class, /Users/nicolasrinaudo/dev/nrinaudo/tabulate/core/target/scala-2.11/classes/tabulate/CellDecoder$$anonfun$10$$anonfun$apply$9.class, /Users/nicolasrinaudo/dev/nrinaudo/tabulate/core/target/scala-2.11/classes/tabulate/RowDecoder$$anonfun$caseDecoder8$1$$anonfun$apply$36$$anonfun$apply$37.class, /Users/nicolasrinaudo/dev/nrinaudo/tabulate/core/target/scala-2.11/classes/tabulate/CellEncoder$$anonfun$opt$1.class, /Users/nicolasrinaudo/dev/nrinaudo/tabulate/core/t
@nrinaudo
nrinaudo / Encoder.scala
Created Nov 3, 2015
Demonstration of my issues with export-hook
View Encoder.scala
import export._
trait Encoder[T] {
// Type class defns ...
}
object Encoder extends EncoderLowPriority {
// Instances which should be higher priority than derived
// or subclass instances should be defined here ...
}
@nrinaudo
nrinaudo / GZip.scala
Created Feb 26, 2014
Sample implementation of automated un-gzipping of client entity bodies.
View GZip.scala
import unfiltered.request._
import unfiltered.response.BadRequest
import unfiltered.Cycle
import java.nio.charset.Charset
import scala.util.Try
object ContentEncoding extends ConnegHeader("Content-Encoding")
object Encodes {
trait Encoding {