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 cats._, cats.implicits._ | |
import cats.data.Xor | |
object Main extends App { | |
assert(Foldable[List].foldK(List(List(1, 2), List(3, 4, 5))) == List(1,2,3,4,5)) | |
assert(Foldable[List].foldK(List(None, Option("two"), Option("three"))) == Some("two")) | |
def parseInt(s: String): Option[Int] = | |
Xor.catchOnly[NumberFormatException](s.toInt).toOption |
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
package cats.bench | |
import cats.data.Xor | |
import cats.instances.either._ | |
import cats.syntax.all._ | |
import org.openjdk.jmh.annotations.{ Benchmark, Scope, State } | |
@State(Scope.Benchmark) | |
class EitherBench { | |
val ea: Either[String, Int] = Right(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
scala> import scalaz.Reader, scalaz.syntax.applicative._ | |
import scalaz.Reader | |
import scalaz.syntax.applicative._ | |
scala> import scala.reflect.runtime.universe.{ reify, showCode } | |
import scala.reflect.runtime.universe.{reify, showCode} | |
scala> type ReaderInt[A] = Reader[Int, A] | |
defined type alias ReaderInt |
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 scalaz.Reader, scalaz.syntax.applicative._ | |
import scalaz.Reader, scalaz.syntax.applicative._ | |
@ type ReaderInt[A] = Reader[Int, A] | |
defined type ReaderInt | |
@ desugar { "foo".point[ReaderInt] } | |
res31: Desugared = scalaz.syntax.`package`.applicative.ApplicativeIdV[String]("foo").point[$sess.cmd30.ReaderInt](scalaz.Kleisli.kleisliIdMonadReader[Int]) |
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
object Main extends App { | |
// 似非 package | |
object syntax { object std { object map { | |
final class MapOps[K, V](self: Map[K, V]) { | |
final def connect[W](other: Map[V, W]): Map[K, W] = | |
self flatMap { case (k, v) => other.get(v) map (k -> _) } | |
} | |
implicit def ToMapOps[K, V](m: Map[K, V]): MapOps[K, V] = new MapOps[K, V](m) | |
} } } |
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 scala.concurrent._ | |
import scala.concurrent.ExecutionContext.Implicits.global | |
import scala.concurrent.duration.Duration | |
import scala.sys.process._ | |
object Main extends App { | |
"date +start:%H:%M:%S".! | |
val fx = Future { println(1); Thread.sleep(6000); "date +x%H:%M:%S".!; 1 } | |
val fy = Future { println(2); Thread.sleep(4000); "date +y%H:%M:%S".!; 2 } |
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 com.github.nscala_time.time.Imports._ | |
import scala.concurrent._ | |
import scala.concurrent.ExecutionContext.Implicits.global | |
import scala.concurrent.duration.Duration | |
import scalaz._, syntax.either._, std.AllInstances._ | |
object Main extends App { | |
type EitherFuture[A] = EitherT[Future, String, A] | |
def date(): String = DateTimeFormat.forPattern("HH:mm:ss").print(new DateTime) |
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 scala.concurrent._ | |
import scala.concurrent.duration._ | |
import scala.concurrent.ExecutionContext.Implicits.global | |
object Main extends App { | |
val fs: List[Future[Int]] = List( | |
Future { Thread.sleep(2000); println(1); 1 }, | |
Future { Thread.sleep(1000); println(2); 2 }, | |
Future { Thread.sleep(3000); println(3); 3 } | |
) |
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
object Main extends App { | |
import scalaz.syntax.std.boolean._ | |
val x = (1 > 0) ? "true" | "false" | |
println(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
import org.scalameter._ | |
import scala.concurrent._ | |
import scala.concurrent.ExecutionContext.Implicits.global | |
import scala.concurrent.duration._ | |
object Main extends App { | |
val standardConfig = config( | |
Key.exec.minWarmupRuns -> 20, | |
Key.exec.maxWarmupRuns -> 40, | |
Key.exec.benchRuns -> 10, |
NewerOlder