Useful 等の公開すべきでないものが公開されている。 型が書かれていない public なメンバも多く、API に対する意識が低い。
Pk, Id, NoAssigned 等は Magic のために導入された型だが、
イベント開催サイトみたいなの使うまでもないのでこれを fork する感じで感じで。 | |
sbt について語りながら sbt を食べる会です。四人くらい集まったら fork で予定日出し合いましょう。 | |
moc aka @lyrical_logical |
new Runnable() { | |
@Override | |
public void run() { | |
// some processes... | |
} | |
}; |
import scala.language.higherKinds | |
sealed trait Base[F[_]] { // all compilation is succeeded if F' kind is * | |
def a: String | |
} | |
case class Ctor[F[_]](a: String) extends Base[F] | |
abstract class Etor[F[_]] extends Base[F] { | |
def f(q: Base[F]): String = q match { | |
case Ctor(fa) => fa // NP | |
case Etor(fa) => fa // error! why??? |
walk :: Var -> Subst -> Var | |
walk var subst = go var subst | |
where go :: Var -> List Var -> Maybe Var -> Var | |
go (Unbound k) stack acc = | |
case (subst k, acc) of | |
(Nothing, Nothing) -> Unbound k | |
(Nothing, Just u) -> Cons u v | |
(Just v, _) -> go v stack acc | |
go (Cons h t) stack acc = go h (t :: stack) acc | |
go v [] Nothing = v |
138c138 | |
< enum class E sealed, subclasses: List(class Cons, trait L, object SNil) | |
--- | |
> enum class E sealed, subclasses: List(class Cons, object SNil) | |
140d139 | |
< checkableType(E.L): E.L | |
142,143c141 |
// ==UserScript== | |
// @name twitter-autocompletion-disabler | |
// @namespace lyrical.logical | |
// @description disable autocompletion on twitter | |
// @match https://twitter.com/ | |
// ==/UserScript== | |
(function() { | |
var form = document.getElementsByClassName("tweet-form")[0]; | |
var menu = form.getElementsByClassName("dropdown-menu typeahead")[0]; |
import scala.annotation.tailrec | |
import scala.language.higherKinds | |
sealed trait Freer[F[_], A] { | |
def map[B](f: A => B): Freer[F, B] = flatMap(a => Pure(f(a))) | |
def flatMap[B](f: A => Freer[F, B]): Freer[F, B] = | |
this match { | |
case Pure(a) => f(a) | |
case Impure(fa, g) => Impure(fa, g :+ f) | |
} |
import scala.language.higherKinds | |
import scala.language.existentials | |
sealed trait Freer[F[_], A] { | |
def map[B](f: A => B): Freer[F, B] = flatMap(a => Pure(f(a))) | |
def flatMap[B](f: A => Freer[F, B]): Freer[F, B] = | |
this match { | |
case Pure(a) => f(a) | |
case Impure(fa, g) => Impure(fa, g :+ f) | |
} |
以下の考察は openjdk のコードを元にしているため、oracle だとまた違うかもしれない。
map0 でめでたく native からヒープをがさっと取ってこれた場合、色々あった末に DirectBuffer を implements した DirectByteBuffer とやらが具象クラスとなる。 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/nio/DirectByteBuffer.java DirectBuffer は自身の確保したリソースを開放する役割を持つオブジェクト Cleaner を返すメソッドを持っており、clean の処理は Unmapper に委譲される。 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/nio/ch/FileChannelImpl.java#FileChannelImpl.Unmapper Cleaner は「オブジェクトが phantom reachable になった際に後処理を行いたい場合に利用するクラス」であり、ぶっちゃけ普通は出番ない。 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/misc/Cleaner.java
ここから推測。