Skip to content

Instantly share code, notes, and snippets.

@ppurang
ppurang / qsort.md
Created July 21, 2011 16:45
quicksort

quicksort

scala

def qsort[A <% Ordered[A]](v: Seq[A]): Seq[A] = v.headOption match {
  case Some(x) => (qsort(v.tail.filter(_ < x)) :+ x) ++ qsort(v.tail.filter(_ >= x))
  case _ => Seq()
}

haskell

@ppurang
ppurang / REPL session
Created July 1, 2011 10:36 — forked from gseitz/REPL session
Create 1-line extractors for traits
scala> trait YouCantMatchMe
defined trait YouCantMatchMe
scala> object YesICan extends Traitor[YouCantMatchMe]
defined module YesICan
scala> def uncatchable_?(any: Any) = any match {
| case YesICan(uncatchable) => Some(uncatchable)
| case _ => None
| }
@ppurang
ppurang / mapOnABinaryTree.scala
Created April 20, 2011 21:51
In 2.9.0 RC0 issues encountered while defining a map using fold on BTree
/*
Given a map defined like:
def map[A, B](f: A => B)(btree: BTree[A]): BTree[B] =
fold((_:A) => Leaf(f(_)).asInstanceOf[BTree[B]])((x:BTree[B]) => (y:BTree[B]) => Fork(x,y))(btree)
when applied on a tree ((1 2) (3 4))
map((x:Int) => x*2)(BTree(1 :: 2 :: 3 :: 4 :: Nil))
results in ((<function1> <function1>) (<function1> <function1>))