Skip to content

Instantly share code, notes, and snippets.

View pandaforme's full-sized avatar

pandaforme

View GitHub Profile
@pandaforme
pandaforme / gist:e378dc3f1f32aa252b14e40937491e9c
Created May 19, 2017 15:03
sbt-release integrates with sbt-docker
import sbt.Keys._
import sbt._
import sbtdocker.DockerPlugin.autoImport._
import sbtrelease.ReleasePlugin.autoImport.ReleaseTransformations._
lazy val resolversSettings = ...
lazy val versions = ...
lazy val dependenciesSettings = ...
@pandaforme
pandaforme / Capture.scala
Created February 20, 2017 08:10
Free your context
import scala.concurrent.{ExecutionContext, Future}
import scala.util.Try
import cats.implicits._
import simulacrum.typeclass
sealed trait Error
case class SomethingWrong(e: Throwable) extends Error
@typeclass
package writer
import cats.Monoid
case class Writer[A, D](value: A, message: D)(implicit m: Monoid[D]) {
def flatMap[B](f: A => Writer[B, D]): Writer[B, D] = f(value) match {
case Writer(result, d) => Writer(result, m.combine(message, d))
}
def map[B](f: A => B): Writer[B, D] = Writer[B, D](f(value), message)
}