Skip to content

Instantly share code, notes, and snippets.

Paul Kinsky pkinsky

Block or report user

Report or block pkinsky

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile

How to install latest GHC 7.8.4 + cabal 1.22 on intel edison w/ ubi linux


ubilinux prerequisites

# for untar later
apt-get install bzip2
# probably all needed
apt-get install freeglut3 freeglut3-dev -y
pkinsky / throttle.scala
Created Dec 3, 2014
Throttle a flow using Akka Stream's new FlowGraph DSL
View throttle.scala
val rate = 200 millis
def throttled[T]: Flow[T, T] = {
val tickSource = TickSource(rate, rate, () => () )
val zip = Zip[T, Unit]
val in = UndefinedSource[T]
val out = UndefinedSink[T]
PartialFlowGraph{ implicit builder =>
import FlowGraphImplicits._
in ~> zip.left ~> Flow[(T,Unit)].map{ case (t, _) => t } ~> out
pkinsky / Scala Trie
Last active Aug 29, 2015
Scala Trie
View Scala Trie
case class Trie(v: Option[String], m: Map[Char, Trie])
def addInner(t: Trie, s: List[Char], p: String): Trie = s match {
case c::cs => Trie(t.v, t.m.updated(c, addInner(t.m.getOrElse(c, Trie(Some(p + c), Map.empty)), cs, p + c) ))
case Nil => t
def add(t: Trie, s: String): Trie = addInner(t, s.toList, "")
def findInner(t: Trie, s: List[Char]): Option[String] = s match {
pkinsky / f2048
Last active Aug 29, 2015
functional 2048
View f2048
//todo: use vector, scala 2:10 generic extractors. Currently using 2.9, so List has better pattern matching support
type Row = List[Option[Int]]
def shiftR(r: Row): Row = r.foldRight(Nil: Row){
case (None, acc) => acc
case (Some(x), Some(a)::as) if a == x => Some(a + x)::as
case (Some(x), acc) => Some(x)::acc
}.padTo(4, None)
You can’t perform that action at this time.