Skip to content

Instantly share code, notes, and snippets.

View acowley's full-sized avatar

Anthony Cowley acowley

  • Philadelphia, PA, USA
View GitHub Profile
{-# LANGUAGE ScopedTypeVariables #-}
module Rendering.CLGLBuffer where
import Control.Parallel.CLUtil
import Foreign.Ptr (nullPtr)
import Foreign.Storable (Storable(sizeOf))
import Graphics.GLUtil.BufferObjects
import Graphics.Rendering.OpenGL (deleteObjectName, BufferObject, BufferTarget(..))
import Rendering.CLGLInterop
data CLGLBuffer a = CLGLBuffer { asVBO :: BufferObject
@acowley
acowley / StateDemo.hs
Created February 17, 2015 01:21
No Transformer Stack
{-# LANGUAGE DataKinds, FlexibleContexts, TypeOperators #-}
import Control.Monad.State
import Data.Vinyl
type OuterData = '("Outer", String)
type InnerData = '("Inner", String)
outerData :: SField OuterData
outerData = SField
@acowley
acowley / Cocreature.hs
Created May 22, 2015 02:33
Declaring columns in Frames
{-# LANGUAGE OverloadedStrings, QuasiQuotes, RankNTypes #-}
{-# LANGUAGE DataKinds, FlexibleContexts, TemplateHaskell, TypeOperators #-}
import Frames
import Frames.ColumnUniverse
import Frames.CSV
import Lens.Family
import Pipes
-- Manually declared columns using a TH helper
declareColumn "x2" ''Double
{-# LANGUAGE NamedFieldPuns, TupleSections #-}
-- |A Haskell program that demonstrates a simple "Hello, world!"
-- application using genetic algorithms. Based on code by John Svazic.
--
-- Author: Anthony Cowley
import Control.Applicative
import Control.Arrow (second)
import Control.Monad (liftM, replicateM)
import Control.Monad.Random
@acowley
acowley / CLGLInterop.hs
Created March 23, 2012 17:07
Example of setting up OpenCL to use an OpenGL context. Uses the CLUtil library.
{-# LANGUAGE ForeignFunctionInterface #-}
module Renderer.CLGLInterop (initFromGL) where
import Control.Parallel.CLUtil
import Foreign.Ptr (nullPtr, Ptr)
foreign import ccall "CGLGetCurrentContext"
cGLGetCurrentContext :: IO (Ptr ())
foreign import ccall "CGLGetShareGroup"
cGLGetShareGroup :: Ptr () -> IO (Ptr ())
@acowley
acowley / gist:2362200
Created April 11, 2012 20:23
Proof of Nichomacus's theorem in Coq.
(* Ported from Dan Peebles's proof at: https://gist.github.com/2356060 *)
Module SquaredTriangular.
Require Import Arith.
Definition N := nat.
(* Sigma notation for expressing sums. *)
Fixpoint Σ (x : N) (f : N -> N) : N :=
match x with
| 0 => 0
@acowley
acowley / gist:2417401
Created April 18, 2012 23:43
cabal-test with internal modules
name: cabal-test-test
version: 0.1.0.0
build-type: Simple
cabal-version: >=1.8
-- Library source in "src/lib", Internal module in "src/misc"
library
exposed-modules: MyLib.Foo
other-modules: MyLib.Internal.Bar
hs-source-dirs: src/lib, src/misc
{-# LANGUAGE DataKinds, TypeFamilies, UndecidableInstances #-}
import Control.Monad (join)
import Criterion.Main
import Data.Functor.Identity
import Data.Vinyl
import Data.Vinyl.TypeLevel
class Eq2 a where
eq2 :: a -> a -> Bool
@acowley
acowley / StorableBinary.hs
Created June 7, 2013 21:59
Demonstrate building a ByteString from heterogenous Storable types.
{-# LANGUAGE ScopedTypeVariables #-}
import Data.Binary.Builder
import Data.Binary.Builder.Internal
import Foreign.Ptr (castPtr)
import Foreign.Storable (Storable(sizeOf,poke))
-- For testing
import Linear
import Data.ByteString.Lazy (ByteString)
import Data.Monoid ((<>))
@acowley
acowley / mdedetrichModel.hs
Created July 2, 2013 01:48
Example of vinyl subtyping.
{-# LANGUAGE DataKinds, FlexibleContexts, TypeOperators #-}
import Data.Vinyl
type Model = "model" ::: String
model :: Model
model = Field
type Car = PlainRec ["company":::String, Model, "year":::Int]