Skip to content

Instantly share code, notes, and snippets.

View michaelt's full-sized avatar

michaelt michaelt

  • twitter antiphasis_
View GitHub Profile
@michaelt
michaelt / UninstallHS.hs
Created May 22, 2012 23:54 — forked from mzero/UninstallHS.hs
Mac OS X Haskell Uninstaller preview
#!/usr/bin/env runghc
module Main where
{-
Uninstall.hs - a Haskell uninstaller for Mac OS X
This program is really far too big to be in a single file. However, I
wanted it to be easily distributable and runnable, and so have kept it all
together.
@michaelt
michaelt / asyncidiom.hs
Created June 23, 2012 16:35 — forked from sjoerdvisscher/asyncidiom.hs
Applicative async programming
import Control.Concurrent
import Control.Concurrent.Async
import Control.Applicative
import Control.Monad
import Data.Traversable
newtype Concurrently a = Concurrently { runConcurrently :: IO a }
instance Functor Concurrently where
@michaelt
michaelt / asyncidiom.hs
Created June 23, 2012 16:35 — forked from sjoerdvisscher/asyncidiom.hs
Applicative async programming
{-# LANGUAGE ImplicitParams, ParallelListComp,MonadComprehensions #-}
import Control.Monad
import Control.Monad.Fix
import Control.Monad.Zip
import Control.Applicative
import Control.Concurrent
import Control.Concurrent.MVar
import Control.Exception
import Prelude -- hiding (catch)
import Data.IORef
@michaelt
michaelt / gist:3171764
Created July 24, 2012 18:45
Humpty Dumpty

Humpty Dumpty sat on a wall,
Humpty Dumpty had a great fall.
All the king's horses and all the king's men
Couldn't put Humpty together again.

@michaelt
michaelt / html.hs
Created July 28, 2012 17:14 — forked from LnL7/html.hs
module HTML where
class Tag a where
toHTML :: a -> String
data Attribute = Attribute {
key :: String,
value :: String
} deriving Show
@michaelt
michaelt / gist:3847032
Created October 7, 2012 03:50
parsepacket
countPackets p =
let v = AL.parse (CA.many packetValue) p
r = fromMaybe [] $ AL.maybeResult v
in r
@michaelt
michaelt / FileIO.hs
Created November 7, 2012 16:23
acid state win32
module FileIO (FHandle,open,write,flush,close,obtainPrefixLock,releasePrefixLock,PrefixLock) where
import System.Win32(HANDLE,
createFile,
gENERIC_WRITE,
fILE_SHARE_NONE,
cREATE_ALWAYS,
fILE_ATTRIBUTE_NORMAL,
win32_WriteFile,
flushFileBuffers,
closeHandle)
@michaelt
michaelt / gist:5568429
Last active December 17, 2015 06:49 — forked from reite/gist:5568152
{-#LANGUAGE OverloadedStrings#-}
import Data.Aeson.Types
import Data.Aeson
import qualified Data.Vector as V
import qualified Data.ByteString.Lazy as L
import Data.HashMap.Strict
import qualified Data.Text as T
-- this is backward maybe -- also doesn't crack open the Values
import Control.Monad
import Control.Concurrent
import Control.Concurrent.STM
import System.Random
import Text.Printf
-- Forks
type Fork = TMVar Int
newFork :: Int -> IO Fork
{-# LANGUAGE ScopedTypeVariables #-}
import System.Environment
import Data.Char
import System.IO
import System.Process
import System.Exit
import Control.Concurrent (forkIO, newEmptyMVar, putMVar, takeMVar)
import qualified Control.Exception as C