Skip to content

Instantly share code, notes, and snippets.

View gakuzzzz's full-sized avatar

Manabu Nakamura gakuzzzz

View GitHub Profile
import httpz._, native._
object Main {
final case class Repo(owner: String, name: String)
val repositories = (
Repo("slick", "slick") ::
Repo("mauricio", "postgresql-async") ::
Repo("squeryl", "squeryl") ::
@xuwei-k
xuwei-k / Ideal.scala
Last active August 29, 2015 14:15
stack safe Ideal Monad in Scala
import scala.annotation.tailrec
import scalaz._
import scalaz.Leibniz.===
object Ideal {
private final case class Pure[F[_], A](a: A) extends Ideal[F, A]
private final case class Suspend[F[_], A](fa: F[A]) extends Ideal[F, A]
private sealed abstract case class Gosub[F[_], B]() extends Ideal[F, B] {
type C
val a: () => Ideal[F, C]
trait HApply[F[_[_]]] extends HFunctor[F] {
def apply2[A1[_], A2[_], Z[_]](a1: F[A1], a2: F[A2])(f: ({type l[a] = (A1[a], A2[a])})#l ~> Z): F[Z]
def apply3[A1[_], A2[_], A3[_], Z[_]](a1: F[A1], a2: F[A2], a3: F[A3])(f: ({type l[a] = (A1[a], A2[a], A3[a])})#l ~> Z): F[Z] =
apply2[({type l[a] = (A1[a], A2[a])})#l, A3, Z](tuple2(a1, a2), a3)(
new (({type l[a] = ((A1[a], A2[a]), A3[a])})#l ~> Z){
def apply[a](fa: ((A1[a], A2[a]), A3[a])) =
f((fa._1._1, fa._1._2, fa._2))
}
)
import scalaz._, Scalaz._
object MaxValue extends App {
val a = Map(1 -> 10, 2 -> 5)
val b = Map(2 -> 10, 3 -> 7)
val c = a.mapValues(Tags.MaxVal) |+| b.mapValues(Tags.MaxVal)
(c: Map[Int, Int]) assert_=== Map(1 -> 10, 2 -> 10, 3 -> 7)
}
@kazu-yamamoto
kazu-yamamoto / gist:5873204
Created June 27, 2013 01:09
Free Operational example to be interpreted to IO and pure testing.
{-# LANGUAGE GADTs #-}
module Main where
import Control.Monad
import Control.Monad.Operational.Simple
import Prelude hiding (putChar, getChar)
import qualified System.IO as IO
import Test.QuickCheck
@nakamura-to
nakamura-to / doma_immutable_entity.md
Last active December 22, 2015 11:19
Doma 1.34.0に入ったイミュータブルなエンティティのサポートについて
@asufana
asufana / Play1.xのJava8対応.markdown
Last active July 24, 2018 08:33
PlayFramework 1.2.x Java8対応

PlayFramework 1.2.x Java8対応

Java8対応の1.3がリリースされそうな様子がないため、1.2.xブランチにJava8対応コミットを適用して利用する。

PlayFramework1リポジトリをforkする

  • GitHubサイト上で PlayFramework1リポジトリ をforkする

  • タグ 1.2.5.4 をチェックアウトして新しいブランチ 1.2.5.4-java8 を生成する

@sile
sile / pfds-7.md
Last active June 30, 2019 20:34
Purely Functional Data Structures: 第7章

第7章 償却を除去する

memo: スケジューリングの役割

  • イメージ的には銀行員の手法での__支払い__を実装に反映した感じ
  • 後ろに重いサスペンションが控えている場合の挙動の違い:
    • 6章(償却):「軽い操作で__仮想的に__その内のN個のデビットを払ったことにしておこう」
    • 7章(最悪):「軽い操作で__実際に__その内のN個の(小さな)サスペンションを事前に評価しておこう」
  • 支払い(or 評価)が終わっていないオブジェクト(サスペンション)に対するアクセスは許可されない
@RayStarkMC
RayStarkMC / PhantomBuilderSample.java
Created November 6, 2020 12:00
幽霊型を用いた不変オブジェクトの型安全な不変ビルダのサンプルコード
public class PhantomBuilderSample {
public static class Data {
private final int field1;
private final int field2;
private final int field3;
private final int optField1;
private final int optField2;
private Data(Builder<OK, OK, OK> builder) {
@runarorama
runarorama / gist:a8fab38e473fafa0921d
Last active April 13, 2021 22:28
Compositional application architecture with reasonably priced monads
sealed trait Interact[A]
case class Ask(prompt: String)
extends Interact[String]
case class Tell(msg: String)
extends Interact[Unit]
trait Monad[M[_]] {
def pure[A](a: A): M[A]