This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.concurrent.LinkedBlockingDeque | |
import scala.annotation.tailrec | |
object `MyOwnFsm;)` extends App{ | |
// val musta = new Musta | |
// musta ! "to5" | |
// musta ! "to6" | |
// musta ! "should crash" | |
// println | |
val pc = new PorcheCounter | |
1 to 3 foreach { _ => pc ! Car("porsche") } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sealed trait JsValue { | |
override final def toString = mkString | |
def mkString: String | |
} | |
case class JsArray(value: JsValue*) extends JsValue { | |
def mkString = value.map{ _.mkString }.mkString("[", ", ", "]") | |
} | |
case class JsObj(value: (String, JsValue)*) extends JsValue { | |
def mkString = value.map{ | |
case (k, v) => s""""$k": ${v.mkString}""" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
case class PackedArray[T](elems: Array[AnyRef]) | |
object Packer { | |
def unapply[T](pa: PackedArray[T]): Seq[T] = macro unpack_impl[T] | |
def unpack_impl[T : c.WeakTypeTag](c: Context)(pa: c.Expr[PackedArray[T]]): c.Expr[Seq[T]] = { | |
import c.universe._ | |
val tTyp = weakTypeOf[T] | |
val Some(fields) = tTyp.declarations.collectFirst { | |
case cons: MethodSymbol if cons.isPrimaryConstructor && !cons.isPublic => | |
c.error(c.enclosingPosition, "No public primary constructor found") | |
Nil |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Created by arneball on 2014-05-08. | |
*/ | |
import java.util.{List => JList} | |
import retrofit.client.Response | |
import retrofit.http.{Path, GET} | |
import retrofit.{RetrofitError, Callback, RestAdapter} | |
import collection.JavaConversions._ | |
object RetroFit extends App { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ext extends StaticAnnotation { | |
def macroTransform(annottees: Any*) = macro extension.impl | |
} | |
object extension { | |
def impl(c: Context)(annottees: c.Expr[Any]*): c.Expr[Any] = { | |
import c.universe._ | |
annottees.map{ _.tree }.head match { | |
case q"def $name[..$tp](...$params): $ret = $b" => | |
val Seq(Seq(thiz, rest @ _*), rest2 @ _*) = params |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Created by arneball on 2014-05-31. | |
*/ | |
object LazyTest extends App { | |
val n = new LazyTest | |
try { | |
println(n.lazyIntInDaHouse) | |
} catch { case t: Throwable => } | |
println(n.lazyIntInDaHouse) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Created by arneball on 2014-06-14. | |
*/ | |
object ExtractorTest extends App with Integral.ExtraImplicits{ | |
@extract def longString(str: String) = str.length > 1 | |
@extract def cool(int: Int) = Option(int).filter{ 2 < _ }.map{ 2 * } | |
@extract def evensum[T : Integral](l: List[T]) = { | |
l.sum % implicitly[Integral[T]].fromInt(2) == 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
trait WkRef[+T >: Null <: AnyRef] extends WeakReference[T @uncheckedVariance] { | |
def map[U >: Null <: AnyRef](f: T => U): WkRef[U] = if(isDefined) new WeakRef[U](f(get)) else WeakNone | |
def flatMap[U >: Null <: AnyRef](f: T => WkRef[U]) = if(isDefined) f(get) else WeakNone | |
def isDefined: Boolean | |
def foreach[U](f: T => U) = if(isDefined) f(get) | |
def filter(f: T => Boolean): WkRef[T] = if(isDefined && f(get)) this else WeakNone | |
} | |
object WkRef { | |
def apply[T >: Null <: AnyRef](t: T) = t match { | |
case null => WeakNone |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Compiled from "MyInterface.java" | |
public interface batik.MyInterface { | |
public abstract java.util.List<java.lang.String> strings(); | |
public int totalLength(); // OBSERVERA DEFAULT METHOD I INTERFACE | |
Code: | |
0: iconst_0 | |
1: istore_1 | |
2: aload_0 | |
3: invokeinterface #1, 1 // InterfaceMethod strings:()Ljava/util/List; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
object MySorts extends Ordering.ExtraImplicits { | |
def mergeSort[T : Ordering](elems: List[T]): List[T] = elems match { | |
case Nil | _::Nil => elems | |
case that => | |
type L = List[T] | |
def merge(l1: L, l2: L, acc: L): L = l1 -> l2 match { | |
case (a::as, b::_) if a < b => merge(as, l2, a::acc) | |
case (_, b::bs) => merge(l1, bs, b::acc) | |
case (a::as, _) => merge(as, l2, a::acc) |
OlderNewer