Skip to content

Instantly share code, notes, and snippets.

def foldLeft[T](l: List[T], initial: T, f: (T,T) => T) : T = {
def loop(v: List[T], accum: T) : T = {
l match{
case Empty => accum
case Cons(head,tail) => loop(tail, f(head,accum))
}
}
loop(l,initial)
@loosechainsaw
loosechainsaw / fuckyeahreadermonad.scala
Created November 6, 2013 12:16
Fuck Yeah Reader Monad
package examples.monads
case class User(id: Int, username: String, name: String)
trait UserRepository{
def getById(id: Int) : Option[User]
def save(user: Option[User]) : Unit
}
trait UserService{
@loosechainsaw
loosechainsaw / Main.scala
Created December 10, 2013 12:31
Scala Quick Find and Quick Union implementations
import scala.annotation.tailrec
object Main extends App {
def QuickFindExample() {
var qu = QuickFind(10)
qu.union(1, 6)
qu.union(2, 6)
qu.union(2, 7)
@loosechainsaw
loosechainsaw / binaryheappq.cpp
Created January 7, 2014 10:48
Priority Queue with a Binary Heap Structure
#include <iostream>
#include <memory>
template<class T>
class LessThan{
public:
inline static bool apply(T const& a, T const& b){
return a < b;
}
};
@loosechainsaw
loosechainsaw / bst.cpp
Created January 19, 2014 11:40
Binary Search Tree in C++
#include <iostream>
#include <functional>
#include <algorithm>
#include <exception>
#include <stdexcept>
template<class T, class Less, class Greater>
class Node{
public:
explicit Node(Less const& comparer, Greater const& greater);
#include <iostream>
#include <vector>
#include <memory>
#include <algorithm>
class drawable_concept{
public:
drawable_concept() = default;
virtual ~drawable_concept() = default;
drawable_concept(drawable_concept const&) = delete;
#ifndef DRAWING
#define DRAWING
#include <memory>
#include <iostream>
namespace concepts{
namespace drawing{
struct concept_t{
concept_t() = default;
#include <iostream>
#include <memory>
template<class T>
class Option{
public:
Option() : value_(nullptr){
}
Option(T const& value) : value_(std::move(value)){
@loosechainsaw
loosechainsaw / splitat.hs
Created May 7, 2014 13:31
Haskell Implementation of Split At
seperateAt :: Int -> [a] -> ([a],[a])
seperateAt 0 [] = ([], [])
seperateAt 0 xs = ([], xs)
seperateAt n (x: []) = (x : [], [])
seperateAt n (x:xs) =
let result = (seperateAt (n - 1) xs)
in (x : fst result, snd result)
@loosechainsaw
loosechainsaw / appendSwapped.hs
Last active August 29, 2015 14:01
appendSwapped.hs
module Main where
appendSwapped :: [(a,a)] -> [(a,a)]
appendSwapped [] = []
appendSwapped xs = xs ++ (flipped xs)
where flipped li = foldr (\c d -> swaptuple c : d ) [] li
swaptuple (a,b) = (b,a)
main :: IO ()
main = print $ appendSwapped [(1,2), (3,4)]