Skip to content

Instantly share code, notes, and snippets.

@akihiro4chawon
akihiro4chawon / PE249.scala
Created November 15, 2011 09:55
[PE249] Thunk 潰しというか、残念な名前渡しをでっち上げた後に潰す
import scalaz._
import Scalaz._
// Haskell には Thunk 潰しという遊戯があるらしい。
// <http://d.hatena.ne.jp/route150/20111108/1320736981>
// そこで、scala でも「名前渡し潰し」で遊ぼうという趣旨
// むしろ、名前渡しでドツボな状況を作るのを苦労したというイミフな企画。
// ようやく -Xmx2G などで動いた。。。ヨ
object PE249 extends App {
@akihiro4chawon
akihiro4chawon / bubbleSort.scala
Created November 12, 2011 15:24 — forked from rrgroovy/bubbleSort.groovy
Reinvention of the Wheel Series, "Bubble Sort in Scalaz".
import scalaz._
import Scalaz._
object Bubble {
def bubbleSort[A: Order](xs: List[A]) = xs.unfold[Stream, A] {
_.foldr[Option[(A, List[A])]](none){ (x, zs) =>
zs.fold({case (y, ys) => (x lt y).fold((x, y::ys), (y, x::ys))}, (x, nil[A])).some
}
}
}
@akihiro4chawon
akihiro4chawon / ProjectEuler012_Route150.scala
Created November 7, 2011 11:16
エミュレーションされた純粋世界でエミュレートされるRealWorld
// Route150 さんの Project Euler 12 の答案を scala に移植した
// <http://d.hatena.ne.jp/route150/20111107/1320630501>
import scalaz._
import Scalaz._
import scalaz.effects._
// scalaz の不備を補う
trait ScalazEffectsPatch {
// scalaz.effect.STArray はサイズを取得する(#size())際に
@akihiro4chawon
akihiro4chawon / build.sbt
Created November 6, 2011 13:14
Validation厨として、当面はこれを押していきたい!
name := "ExcelConv"
scalaVersion := "2.9.1"
libraryDependencies += "org.scalaz" %% "scalaz-core" % "6.0.3"
@akihiro4chawon
akihiro4chawon / build.sbt
Created November 6, 2011 12:47
OO っぽい Haskell リスペクト企画!
name := "ExcelConv"
scalaVersion := "2.9.1"
libraryDependencies += "org.scalaz" %% "scalaz-core" % "6.0.3"
@akihiro4chawon
akihiro4chawon / gister.rb
Created November 6, 2011 05:11
yet another gisty clone
require 'json'
require 'httparty'
$username = 'put your username here'
$password = 'put your password here'
require 'net/http'
class Gists
include HTTParty
@akihiro4chawon
akihiro4chawon / src_main_scala_GistyZ.scala
Created November 1, 2011 09:58
gist4z sample - gistyz
import gist4z._
import Gist4z._
import gist4z.objects._
import scalaz._
import Scalaz._
// sample application
object GistyZ {
def main(args: Array[String]) {
@akihiro4chawon
akihiro4chawon / Main.scala
Created October 29, 2011 04:57
applicative style: scalaz vs. haskell
import scalaz._
import Scalaz._
object Main extends App {
val a = List(40, 50, 60)
val b = List(1, 2, 3)
val f = ((_: Int) * (_: Int)).curried
// scalaz applicative style
val scalazStyle = a <*> b ∘ f
@akihiro4chawon
akihiro4chawon / Main.scala
Created October 29, 2011 04:26
XLSBeans を scala から
// 参考文献:Groovy + XLSBeans でエクセルから HTML に流し込み
// <http://another.maple4ever.net/archives/1515/>
import java.io._
import java.util.Date
import java.util.{List => JList, _}
import net.java.amateras.xlsbeans._
import net.java.amateras.xlsbeans.annotation._
import scala.reflect.BeanProperty
import scala.annotation.target.beanSetter
@akihiro4chawon
akihiro4chawon / EitherValidation.scala
Created October 24, 2011 10:03
あえて Either で Applicative な Validation
import scalaz._
import Scalaz._
// 下記文献を参考に、あえて Scalaz と Either でやってみた。
// http://applicative-errors-scala.googlecode.com/svn/artifacts/0.6/pdf/index.pdf
case class Person(age: Int, name: String, postcode: String)
object Main {
implicit def LeftSemigroupEitherApply[X: Semigroup]: Apply[PartialApply1Of2[Either, X]#Apply] = new Apply[PartialApply1Of2[Either, X]#Apply] {