Skip to content

Instantly share code, notes, and snippets.

@cqfd
cqfd / Arith.js
Created February 19, 2014 18:06
Beginnings of an arithmetic expression evaluator thing
var assert = require('assert');
/*
* 1 + 2 * 3 --> 7
* Plus(1, Mult(2, 3))
*/
/*
* There are three kinds of arithmetic expressions:
*
@cqfd
cqfd / asink.cljs
Created May 10, 2014 14:42
Manually trampolined core.async thing.
(ns asink.core
(:require-macros [cljs.core.async.macros :refer [go]])
(:require [cljs.core.async :refer [<! timeout]]
[cljs.nodejs :as n]))
(n/enable-util-print!)
(defn spin []
(go (println "spinning...")
(<! (timeout 1000))
@cqfd
cqfd / ping-pong.cljs
Created May 10, 2014 14:45
Trampolined ping/pong in core.async.
(ns asink.core
(:require-macros [cljs.core.async.macros :refer [go]])
(:require [cljs.core.async :refer [<! timeout]]
[cljs.nodejs :as n]))
(n/enable-util-print!)
(declare ping)
(declare pong)
@cqfd
cqfd / JoinList.hs
Created June 12, 2014 18:35
Join lists.
module JoinList where
import Prelude hiding (drop, take)
import Data.Monoid
newtype Size = Size Int
class Sized b where
size :: b -> Int
@cqfd
cqfd / streamus.cljs
Created June 25, 2014 22:03
Streamus in Om.
(ns streamus.core
(:require-macros [cljs.core.async.macros :refer [go]])
(:require [cljs.core.async :refer [<! >! chan timeout]]
[om.core :as om :include-macros true]
[om-tools.core :refer-macros [defcomponent]]
[om-tools.dom :as dom :include-macros true]))
(defn ^:export onYouTubePlayerAPIReady []
(. js/console (log "we're ready to youtube!")))
@cqfd
cqfd / Breeding.hs
Last active August 29, 2015 14:03
Genetic algorithm in Haskell
module RandomStuff where
import Data.List
import Prelude hiding (flip)
import System.Random
type Organism = [Int]
flip :: [Int] -> Int -> [Int]
flip [] i = []
@cqfd
cqfd / treasury.py
Created July 23, 2014 20:14
Script to scrape some XML data from the Treasury.
import requests
import xml.etree.ElementTree as ET
import pdb
data = requests.get('http://www.treasury.gov/resource-center/data-chart-center/interest-rates/pages/XmlView.aspx?data=yield')
xml = ET.fromstring(data.content)
entries = xml.findall('.//{http://www.w3.org/2005/Atom}entry')
def getTagName(element):
"""
@cqfd
cqfd / B.hs
Last active August 29, 2015 14:04
Bencoding in Haskell.
module B where
import Prelude hiding (take)
import Control.Applicative ((<|>), (<*), (*>), many, liftA2)
import Control.Arrow ((>>>))
import Data.Attoparsec.ByteString (Parser, maybeResult, parse, take)
import Data.Attoparsec.ByteString.Char8 (char, decimal)
import Data.ByteString (ByteString)
data Decoding = S ByteString
@cqfd
cqfd / Main.hs
Last active August 29, 2015 14:05
{-# LANGUAGE ScopedTypeVariables #-}
import Control.Concurrent
import Control.Concurrent.STM
import Control.Exception
import Control.Monad
import Network (listenOn, PortID(PortNumber), withSocketsDo)
import Network.Socket
@cqfd
cqfd / Main.hs
Created September 3, 2014 19:03
Playing around with masking asynchronous exceptions.
import Control.Concurrent
import Control.Exception
-- ಠ_ಠ
import System.IO.Unsafe
ioLock :: MVar ()
ioLock = unsafePerformIO $ do
lock <- newEmptyMVar
putMVar lock ()