Skip to content

Instantly share code, notes, and snippets.

@chrisdone
chrisdone / time_as_relative.js
Created May 5, 2011 16:54
time_as_relative
function time_as_relative(t1,t2,fix){
var diff = t1 - t2;
var minute = 60, hour = minute * 60, day = hour * 24,
week = day * 7, month = day * 30, year = month * 12;
return in_range(
[0,'just now'],
[5,'% seconds',1],
[minute,'a minute'],
[minute*2,'% minutes',minute],
[minute*30,'half an hour'],
@chrisdone
chrisdone / flowchart.hs
Created August 7, 2011 00:04
Flowchart generation proposal.
-- | Generate a flow chart by scanning for annotations from a code base.
module Main where
import Development.Flo
import System.Environment
-- | Main entry point.
main :: IO ()
main = getArgs >>= mapM scanAndPrint >>= putStrLn.digraph.concat where
chris@cn-done:~/ghcjs/examples/main$ sh uglifythisdir
uglifying ./Data/HashTable.js
uglifying ./Data/Tuple.js
uglifying ./Data/Dynamic.js
uglifying ./Data/Char.js
uglifying ./Data/Word.js
uglifying ./Data/Int.js
uglifying ./Data/Bits.js
uglifying ./Data/Maybe.js
@chrisdone
chrisdone / monadic.hs
Created August 29, 2011 22:23
A demonstration of type class design for monadic applications.
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
import Control.Monad
import Control.Monad.Identity
import Control.Monad.Writer
import Control.Monad.State
import Control.Arrow
import Data.Maybe
@chrisdone
chrisdone / x.js
Created September 2, 2011 11:42
closure test
testcase.js
/*
* Demo func
* @param {yes:function()} config
*/
function foo(config){
if(config.yes()){
return true;
} else {
@chrisdone
chrisdone / unify.js
Created September 3, 2011 22:26
unify
var Unifier = (function(){
function Unifier(){
this.bindTable = {};
}
/*******************************************************************************
* Unify two terms.
*
@chrisdone
chrisdone / unifier.js
Created September 4, 2011 15:54
Simple unifier
/*******************************************************************************
* Unify two expressions.
*/
function unify(config){
var exp1 = config.exp1, exp2 = config.exp2;
var frame = config.frame || {};
return config.returnFrame?
[resolve(go(exp1,exp2)),frame] : resolve(go(exp1,exp2));
function go(exp1,exp2){
@chrisdone
chrisdone / unifier.js
Created September 5, 2011 19:13
node unifier
////////////////////////////////////////////////////////////////////////////////
// Simple unifier.
/*******************************************************************************
* Unifier two terms.
* term1: result of parse()
* term2: result of parse()
* frame: (optional) use an existing unification frame
*/
var unify = exports.unify = function(config){
////////////////////////////////////////////////////////////////////////////////
// Simple logic demo, no point in it. But just 'cuz.
var Unifier = require('./unifier.js');
var unify = Unifier.unify;
var parse = Unifier.parse;
/*****************************************************************************
* A simple logic language querier.
@chrisdone
chrisdone / local.js
Created January 17, 2012 19:41 — forked from mightybyte/local.js
Javascript for digestive-functors massInput
/*******************************************************************************
* Main entry point.
*/
$(document).ready(function(){
setupErrors();
setupDates();
setupAutoHide();
setupManageItems();
setupConfirms();
});