| 原著者: | Adrian Holovaty |
|---|---|
| 原文: | Why I left Heroku, and notes on my new AWS setup |
金曜日、私は Heroku から Amazon Web Services(AWS) を直接使うように Soundslice を移行しました。私はこの変更ができてとても、そうとても嬉しくて、私がどうやったかということと、もし皆さんが同じような立場だったら何故それを検討すべきかということについて広く伝えたいと思います。
| trait Magma[A] { | |
| def append(x: A, y: A): A | |
| } | |
| object Magma { | |
| implicit def Monoid[A](implicit m: Monoid[A]) = new Magma[A] { | |
| def append(x: A, y: A) = m.append(x, y) | |
| } | |
| } |
| 原著者: | Adrian Holovaty |
|---|---|
| 原文: | Why I left Heroku, and notes on my new AWS setup |
金曜日、私は Heroku から Amazon Web Services(AWS) を直接使うように Soundslice を移行しました。私はこの変更ができてとても、そうとても嬉しくて、私がどうやったかということと、もし皆さんが同じような立場だったら何故それを検討すべきかということについて広く伝えたいと思います。
| // b88 にて、直接コマンドラインから javac と java を呼び出して動作を確認 | |
| import java.util.Optional; | |
| import java.util.function.Function; | |
| final class OptionalUtil{ | |
| public static <A, B> Optional<B> bind(Optional<A> o, Function<A, Optional<B>> f){ | |
| return o.isPresent() ? f.apply(o.get()) : Optional.empty(); | |
| } | |
| } |
色んなSQLをSquerylで書くと? のパクリです。
テーブル名とかカラム名はちょっと弄りました。
SELECT *| package scalaz | |
| /** [[scala.Either]], but with a value by name. */ | |
| sealed trait LazyEither[+A, +B] { | |
| import LazyEither._ | |
| def fold[X](left: (=> A) => X, right: (=> B) => X): X = | |
| this match { | |
| case LazyLeft(a) => left(a()) |
def cond[A](value: A)(f: PartialFunction[A, SQLBuilder => SQLBuilder]): SQLBuilderこんな感じの(実際にはSQLBuilderはサブクラス型にしないとだけど)あれば下みたいに書けるかなー
val id: Option[Int] = ...
val name: Option[String] = ...| sealed trait Maybe[+A] | |
| case class Just[+A](a: A) extends Maybe[A] | |
| case object Not extends Maybe[Nothing] | |
| sealed trait ConsList[+A]{ | |
| final def ::[AA >: A](h: AA): ConsList[AA] = Cons(h, this) | |
| final def :::[AA >: A](h: ConsList[AA]): ConsList[AA] = { | |
| def loop(other: ConsList[AA]): ConsList[AA] = other match{ | |
| case Cons(head, tail) => head :: loop(tail) | |
| case NIL => this |
!SLIDE
| package bits | |
| import scala.language.experimental.macros | |
| import scala.reflect.macros.Context | |
| object Macros { | |
| def bits(n: Long) = macro impl | |
| def impl(c: Context)(n: c.Expr[Long]): c.Tree = { |