Skip to content

Instantly share code, notes, and snippets.

@cqfd
cqfd / Main.hs
Created September 4, 2014 18:31
Super simple chat server.
import Control.Concurrent
import Control.Concurrent.Async
import Control.Concurrent.STM
import Control.Exception
import Control.Monad
import Network (listenOn, PortID(PortNumber))
import Network.Socket
data Client = Client Socket (TChan String) deriving Eq
@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 ()
@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 / echo.clj
Created August 6, 2014 19:42
Echo server with core.async
(ns sock-async.core
(:require [clojure.java.io :as io]
[clojure.core.async :refer [go <! >! chan timeout]])
(:import [java.net ServerSocket]))
(defn echo [in out]
(go (loop []
(let [msg (<! in)]
(>! out msg)
(recur)))))
@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 / 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 / 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 / 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 / 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 / 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)