Skip to content

Instantly share code, notes, and snippets.

@caeus
caeus / UEnumTypeclass.scala
Last active September 30, 2020 12:49
IsEnum Typeclass (to be honest, better than Enumaratum)
itrait UEnum[T] {
def values: Map[String, T]
def name(t: T): String
def value(name: String): Option[T]
}
object UEnum { obj =>
final case class UEnumImpl[T](seq: T*) extends UEnum[T] {
@caeus
caeus / lorenz_transformation.sc
Created July 20, 2018 14:05
Relativity transformer
type Plane = (Double, Double)
type Matrix = (Plane, Plane)
type TaggedEvents = Map[String, Plane]
private val sin45 = Math.sqrt(0.5)
private val matrixMinus45 = ((sin45, sin45), (-sin45, sin45))
private val matrixPlus45 = ((sin45, -sin45), (sin45, sin45))
package utility.functional
import scala.language.{higherKinds, reflectiveCalls}
import cats.Applicative
import shapeless._
/**
* Given a HList I0::I1:: ... In::HNil and a type Out
* returns a curried function (I0 => I1 => ... In => Out) => Out