Skip to content

Instantly share code, notes, and snippets.

View aoiroaoino's full-sized avatar
🏠
Working from home

Naoki Aoyama aoiroaoino

🏠
Working from home
View GitHub Profile
@dsugden
dsugden / StateTLearning.scala
Last active August 29, 2015 13:57
StateT with Option and Either
import scalaz._
import Scalaz._
object StateTLearning extends App with StateTFunctions {
case class DB(v: Int)
val initial = DB(1)
@ueshin
ueshin / scalamatsuri2014.md
Created September 6, 2014 02:42
SparkSQL samples for ScalaMatsuri2014
@switzer
switzer / gist:4218526
Created December 5, 2012 19:03
Custom Mongodb Serializer/Deserializer
package com.example.core.application
import com.mongodb.casbah.Imports._
import java.util.UUID
import com.example.domain.{User, Address, Customer}
/**
* Contains type classes that deserialize records from Casbah into "our" types.
*/
trait CasbahDeserializers {
@xuwei-k
xuwei-k / FreePreArrow.scala
Created August 3, 2015 16:19
Free PreArrow
package scalaz
/**
* @see [[http://www.fceia.unr.edu.ar/~mauro/pubs/Notions_of_Computation_as_Monoids.pdf]]
*/
sealed abstract class FreePreArrow[F[_, _], A, B] extends Product with Serializable {
def mapfst[AA](f: AA => A)(implicit F: Profunctor[F]): FreePreArrow[F, AA, B] =
FreePreArrow.instance[F].mapfst(this)(f)
def mapsnd[BB](f: B => BB)(implicit F: Profunctor[F]): FreePreArrow[F, A, BB] =
@lotz84
lotz84 / lens.lhs
Last active February 21, 2016 16:56
レンズは余状態余モナドの余代数だった
===================================
余余余〜!別名`関数的参照`とも呼ばれる[レンズ](https://hackage.haskell.org/package/lens)はJavaのGetter, Setterと同等と[言われる](https://twitter.com/plt_borat/status/228009057670291456)関数型プログラミングのデザインパターンの一つです。
レンズは余状態余モナドの余代数だと[聞いて](https://twitter.com/hiratara/status/317602743219003392)そうなのかーと思ってたのですが、ふと自分で実装してみたくなったので **余状態余モナドの余代数** として実装してみることにしました。
ちなみにこの文章は`literate Haskell`という形式で書かれているのでダウンロードしてghciでロードすればすぐにでも自分で試すことができます。
まず最初におまじない
> {-# LANGUAGE RankNTypes #-}
@kmizu
kmizu / how_to.md
Last active January 26, 2017 07:13
プログラミング言語ハンズオン:提案構文拡張

二項演算子の追加(難易度:★)

  • 累乗演算子の追加
  • 剰余演算子の追加
  • 代入系演算子の追加 +=, -= ...

構文の追加(難易度:★★)

  • for構文
@pchiusano
pchiusano / finallytagless.scala
Last active March 13, 2018 11:28
Finally tagless encoding of GADTs in Scala
trait ConsoleAlg[F[_]] {
def readLine: F[Option[String]]
def printLine(line: String): F[Unit]
}
trait Console[+A] {
def run[F[+_]](F: ConsoleAlg[F]): F[A]
}
object Console {
@yutori
yutori / redis_cluster.md
Last active April 20, 2019 23:17
Redis Cluster のリシャーディングとorphaned masterの話 - CyberAgent エンジニア Advent Calendar 2014 2日目

Redis Cluster のリシャーディングとorphaned masterの話

(2019/04 追記 こちらの情報は非常に古く、またRC版での結果となります。記録として残していますが参考になさらないでください

CyberAgent エンジニア Advent Calendar 2014 2日目です。

昨日に引き続き、秋葉原ラボの柿島が担当します。仕事ではHadoopクラスタの運用を中心に、秋葉原ラボのインフラ/ミドルウェアまわりを担当しています。今年はHadoop、mesos、Aerospikeと分散型のシステムを触る機会が多い1年でした。

この記事のテーマはRedis Clusterです。Redis Clusterが使えるようになるRedis 3.0.0は10月にRC1がリリースされました。2015年のQ1にstableリリースを目指しているようです。

@gakuzzzz
gakuzzzz / file.md
Last active June 23, 2019 13:51
UserId など値型はどうするべきか

UserId などの型はどうするべきか

1. primitive 型をそのまま使う

case class Person(id: Long, name: String, organizationId: Long)
object Person {

  def groupByOrg: Map[Long, Seq[Person]] = ...