Skip to content

Instantly share code, notes, and snippets.

@petermarks
petermarks / chat.html
Created February 9, 2011 23:34
Chat client
<html><head>
<title>WebSocket Chat</title>
<script type='text/javascript'>
if (!window.WebSocket)
alert("WebSocket not supported by this browser");
function $() { return document.getElementById(arguments[0]); }
function $F() { return document.getElementById(arguments[0]).value; }
@petermarks
petermarks / gist:868042
Created March 13, 2011 11:53
JSON Zipper
import Text.JSON
import Data.Maybe
data JSZipper = JSZipper {
parent :: Maybe JSZipper,
lefts :: [JSValue],
hole :: JSValue,
rights :: [JSValue]
}
module Visualiser where
import Numeric.FFT
import Data.Complex
test :: [Complex Double]
test = concat $ replicate 16 (replicate 8 1.0 ++ replicate 8 (-1.0))
freqs :: [Complex Double] -> [Double]
freqs samples = take (n `div` 2) . map (/ fromIntegral n) . map magnitude $ fft samples
module Main where
import Sound.Pulse.Simple
main=do
s<-simpleNew Nothing "example" Play Nothing "this is an example application"
(SampleSpec (F32 LittleEndian) 44100 1) Nothing Nothing
simpleWrite s (take 44100 (test 440) ++ take 44100 (test 330) )
simpleDrain s
simpleFree s
@petermarks
petermarks / Automata.hs
Created November 6, 2011 18:20
Automata
module Automata where
import Prelude hiding (id, (.))
import Control.Category
import Control.Arrow
import qualified Data.Map as M
import Data.List (sort)
data Automaton b c = Automaton (b -> (c, Automaton b c))
@petermarks
petermarks / EnumLogfile.hs
Created November 23, 2011 23:25 — forked from commandodev/Automata.hs
EnumLogfile
module Automata where
import Control.Applicative
import Control.Monad.Trans
import qualified Data.ByteString as BS
import qualified Data.ByteString.Char8 as C
import qualified Data.Map as M
import Data.List
import Data.Word
import System.Environment
@petermarks
petermarks / JSONParse.hs
Created March 2, 2012 23:53
JSON QuasiQuoting
--------------------------------------------------------------------
-- |
-- Module : Text.JSON.Parsec
-- Copyright : (c) Galois, Inc. 2007-2009
--
-- Maintainer: Sigbjorn Finne <sof@galois.com>
-- Stability : provisional
-- Portability: portable
--
-- Parse JSON values using the Parsec combinators.
@petermarks
petermarks / Coded.hs
Created March 17, 2012 15:34
Coded (dead end)
{-# LANGUAGE DeriveFunctor, DeriveTraversable, DeriveFoldable #-}
module Coded where
import Control.Unification
import Control.Unification.IntVar
import Control.Monad.Logic
import Data.Functor.Fixedpoint
import Data.List
import Data.Foldable
import Data.Traversable
module Main where
import Control.Monad
import Control.Monad.Logic
import Control.Monad.State.Strict
import qualified Data.Map as M
type BindingT k v = StateT (M.Map k v)
bind :: (Ord k, Eq v, Monad m) => k -> v -> BindingT k v m ()
@petermarks
petermarks / Puzzle.hs
Created April 29, 2012 10:22
Logic Puzzle Solver
{-# LANGUAGE ExistentialQuantification, MultiParamTypeClasses #-}
module Puzzle where
import Data.List
--------------------------------------------------------------------------------
-- Specific to this puzzle
main :: IO ()