Skip to content

Instantly share code, notes, and snippets.

@isomorphism
isomorphism / StreamProc.hs
Created August 14, 2011 20:30
An example of a non-trivial Arrow, for cdsmith
{-# LANGUAGE TypeOperators #-}
module StreamProc where
import Prelude hiding ((.), id, const)
import Control.Category
import Control.Arrow
import Control.Applicative
const :: (Arrow (~>)) => a -> (b ~> a)
const x = arr (\_ -> x)
@isomorphism
isomorphism / Euler12.hs
Created August 6, 2011 05:52
quick and stupid benchmarking example
import Data.List
import System.Environment
{- RE: http://stackoverflow.com/q/6964392/157360
cam@atomos:~/scraps/SO/euler$ ghc -O2 --make Euler12.hs
cam@atomos:~/scraps/SO/euler$ time ./Euler12 1000
842161320
real 0m12.892s
@isomorphism
isomorphism / RotateArgs.hs
Created July 16, 2011 18:25
generalized flip
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module RotateArgs where
data Z = Z
data S n = S n
class RotateArgs n a where
import Prelude hiding ((++), concat)
import Control.Applicative
import Control.Monad
import Data.Maybe
import Data.Monoid
import System.Random
import qualified Data.IntMap as IM
import Graphics.DrawingCombinators
import qualified Graphics.UI.SDL as SDL
import Graphics.UI.SDL.Keysym