注意: これは同時翻訳の記録等からそのまま起こしたもので正式なものではありません。コメント等で詳細を補足して頂けると助かります。
- パネリスト(五十音順):
- 加藤(ChatWork 株式会社、@j5ik2o)
注意: これは同時翻訳の記録等からそのまま起こしたもので正式なものではありません。コメント等で詳細を補足して頂けると助かります。
| import scalaz._, Scalaz._ | |
| sealed trait MyOption[+A] | |
| case class MySome[A](value: A) extends MyOption[A] | |
| case object MyNone extends MyOption[Nothing] | |
| object MyOption { | |
| implicit object MyOptionFunctor extends Functor[MyOption] { |
| object RetryUtil { | |
| case class RetryException(throwables: List[Throwable]) extends Exception | |
| def retry[T](retryLimit: Int, retryInterval: Int, shouldCatch: Throwable => Boolean)(f: => T): T = { | |
| // @annotation.tailrec | |
| def _retry( errors: List[Throwable], f: => T):T = { | |
| try { | |
| f | |
| } catch { |
| class Respond extends Service[Request, Response] with Logger { | |
| def apply(request: Request) = { | |
| try { | |
| request.method -> Path(request.path) match { | |
| case GET -> Root / "todos" => Future.value { | |
| val data = Todos.allAsJson | |
| debug("data: %s" format data) | |
| Responses.json(data, acceptsGzip(request)) | |
| } | |
| case GET -> Root / "todos" / id => Future.value { |
| object Loan { | |
| def using[A <: { def close() }, B](resource: A)(func: A => B): Either[Exception, B] = | |
| try { | |
| Right(func(resource)) | |
| } catch { | |
| case e: Exception => Left(e) | |
| } finally { | |
| if (resource != null) resource.close() | |
| } |
| List(1,2,3,1).zip(List(1,1,1,1)).foldLeft(Map[Int,Int]()) { (x, y) => x.get(y._1) match { case Some(v) => x + Pair(y._1, (v + y._2)) case None => x + y }} |