Skip to content

Instantly share code, notes, and snippets.

abstract sig Event {}
one sig 卒業式 extends Event {}
one sig 海外旅行 extends Event {}
one sig 入社式 extends Event {}
one sig 花見 extends Event {}
one sig ハイキング extends Event {}
abstract sig Item {}
one sig 靴 extends Item {}
one sig ハンカチ extends Item {}
@awekuit
awekuit / Hoge.scala
Created September 5, 2017 02:54
Materialize behavior
import java.time.Instant
import akka.NotUsed
import akka.actor.ActorSystem
import akka.stream.scaladsl.{Flow, Keep, Sink, Source}
import akka.stream.{ActorMaterializer, KillSwitches}
import akka.testkit.TestKit
import akka.util.Timeout
import org.scalatest.{FreeSpecLike, Matchers}
@awekuit
awekuit / gist:79f76346191488a57aa9
Last active August 29, 2015 14:21
Scalaで、型シグネチャが同じcase class同士を変換する
case class Foo(a: Int, s: String)
case class Bar(a: Int, s: String)
val foo = Foo(100, "hey!")
// foo: Foo = Foo(100,hey!)
val bar = Bar.tupled(Foo.unapply(foo).get)
// bar: Bar = Bar(100,hey!)
@awekuit
awekuit / FreeMonad_blog_2.scala
Last active August 29, 2015 14:14
(Coyoneda編) 型引数の基本から学ぶ、FreeモナドとCoyoneda http://awekuit.hatenablog.com/entry/2015/01/30/172010
import scala.language.higherKinds
import scala.language.implicitConversions
import scala.language.reflectiveCalls
trait Functor[F[_]] {
def map[A, B](m: F[A])(f: A => B): F[B]
}
implicit def functorOps[F[_] : Functor, A](self: F[A]) = new {
def map[B](f: A => B): F[B] = implicitly[Functor[F]].map(self)(f)
@awekuit
awekuit / FreeMonad_blog_1.scala
Last active August 29, 2015 14:10
型引数の基本から学ぶ、FreeモナドとCoyoneda http://awekuit.hatenablog.com/entry/2014/12/04/091402
import scala.language.higherKinds
import scala.language.implicitConversions
import scala.language.reflectiveCalls
trait Functor[F[_]] {
def map[A, B](m: F[A])(f: A => B): F[B]
}
implicit def functorOps[F[_] : Functor, A](self: F[A]) = new {
def map[B](f: A => B): F[B] = implicitly[Functor[F]].map(self)(f)
@awekuit
awekuit / FreeMonadList.scala
Last active August 29, 2015 14:09
Free + Option による List 実装のうち、FreeをScalazから単純な実装に移したもの
/**
* "FreeモナドでListを表現する" の理解のため
* 元のコードで使用されているScalazのFreeをシンプルな実装のFreeに置き換えたもの.
*
* 参照
* Freeモナド in Scala: http://yuroyoro.hatenablog.com/entry/2012/11/16/171834
* FreeモナドでListを表現する: http://d.hatena.ne.jp/xuwei/20131123/1385215528
* - scalaz 7.1版: https://gist.github.com/xuwei-k/31c2317a5b9035932399
*/
import scalaz._
@awekuit
awekuit / Option(Free + Coyoneda).scala
Last active August 29, 2015 14:09
Scalaz の Free と Coyoneda で Option (Maybe) Monad 的なもの。
/**
* Free + Coyoneda で Option(Maybe) Monad 的なもの.
*
* OptionをFreeで実現するメリットは特に無いですが
* Coyoneda経由のFreeまでのリフトの流れ
* インタプリタの働きなどを見る学習用です
*
* twitter: @awekuit
*/
import scala.language.higherKinds
@awekuit
awekuit / cepstrum_example.scala
Last active December 28, 2015 11:49
use jtransforms & breeze FFT
import breeze.linalg.DenseVector
import breeze.math._
import edu.emory.mathcs.jtransforms.fft.{DoubleFFT_1D => jFFT}
def show(v1 : Array[_], v2 : Array[_], v3 : Array[_]) {
println("v1: " + v1.mkString(", "))
println("v2: " + v2.mkString(", "))
println("v3: " + v3.mkString(", "))
}