ゴールデン・ゲート・ブリッジを渡りながら考えたことのまとめ。
JSXがたくさんの人に使われるようになりました。とてもすばらしいですね。
/** | |
* https://github.com/json4s/json4s/issues/39 | |
* | |
* Validation Monad instance removed from Scalaz7. | |
* https://github.com/scalaz/scalaz/blob/v6.0.4/core/src/main/scala/scalaz/Validation.scala#L133-L147 | |
* | |
* need explicitly convert to `scalaz.\/` (aka disjunction) if you want use the `Kleisli` composition | |
*/ | |
object Main extends App { | |
scalaVersion := "2.10.2" |
package play.api.mvc | |
import play.api.libs.iteratee._ | |
import play.api._ | |
import scala.concurrent._ | |
import scala.language.higherKinds | |
import scalaz.Id._ | |
trait ActionBuilder[R[_], I[_]] { |
import sbt._ | |
import Keys._ | |
import java.net._ | |
import java.io.File | |
import play.PlayRunHook | |
/* | |
Grunt runner should be in project directory to be picked up by sbt | |
*/ | |
object Grunt { |
import shapeless._ | |
sealed trait List[+T] | |
case class Cons[T](hd: T, tl: List[T]) extends List[T] | |
sealed trait Nil extends List[Nothing] | |
case object Nil extends Nil | |
trait Show[T] { | |
def apply(t: T): String | |
} |
import scalaz.stream.Process | |
import java.nio.{ByteBuffer,CharBuffer} | |
import java.nio.charset.Charset | |
object Decoder { | |
type Bytes = Array[Byte] | |
def decode(charset: Charset, leftovers: Bytes = Array()): Process.Process1[Bytes, Char] = | |
Process.receive1({ data => |
import scalaz._, Scalaz._ | |
object Main extends App{ | |
type ErrorMessage = String | |
def parseName(input: String): ValidationNel[ErrorMessage, String] = { | |
val trimmed = input.trim | |
if (!trimmed.isEmpty) Success(trimmed) else s""""${input}" is not a valid name""".failNel | |
} |
#!/bin/bash | |
## install fontforge | |
brew install fontforge | |
##mkdir work | |
mkdir ~/.Trash/ricty | |
cd ~/.Trash/ricty | |
## get fontfiles |