Skip to content

Instantly share code, notes, and snippets.

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)
}
}
@Gab-km
Gab-km / whyILeftHeroku.rst
Last active December 30, 2022 10:56
何故私は Heroku から離れたか、および新しい AWS セットアップのメモ

何故私は Heroku から離れたか、および新しい AWS セットアップのメモ

原著者: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();
}
}
@gakuzzzz
gakuzzzz / gist:5632577
Last active December 17, 2015 15:29
色んなSQLをScalikeJDBCで書くと?
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())
@gakuzzzz
gakuzzzz / 1.md
Created May 21, 2013 09:14
ScalikeJDBC つれづれ
  def cond[A](value: A)(f: PartialFunction[A, SQLBuilder => SQLBuilder]): SQLBuilder

こんな感じの(実際にはSQLBuilderはサブクラス型にしないとだけど)あれば下みたいに書けるかなー

  val id: Option[Int] = ...
  val name: Option[String] = ...
@xuwei-k
xuwei-k / Main.scala
Last active December 17, 2015 12:39
Monad without map, flatMap, yield
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
@xuwei-k
xuwei-k / endo.md
Created May 19, 2013 14:13
Scalaz Endo
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 = {