Skip to content

Instantly share code, notes, and snippets.

@isomorphism
isomorphism / A.hs
Created April 14, 2014 22:21
ghcjs newtype bug
module A where
import GHCJS.Types
newtype Foo = Foo (JSRef ())
foreign import javascript unsafe "" foo :: IO Foo
{- Output:
@isomorphism
isomorphism / Main.hs
Created April 20, 2014 22:01
ghcjs issue
module Main where
import GHCJS.DOM
import GHCJS.DOM.Types
import GHCJS.DOM.Document
import GHCJS.DOM.EventM
main = do
Just doc <- currentDocument
connect "keydown" doc $ do
@isomorphism
isomorphism / Bug.hs
Created August 7, 2014 00:27
GHCJS storable vector bug?
module Main where
import Data.Vector.Storable as V
main = do
print $ V.fromList [1..9 :: Float]
-- output:
-- "fromList [5.831554e-39,5.831554e-39,1.0,1.0,1.0,1.0,1.0,1.0,1.0]"
@isomorphism
isomorphism / A.hs
Created February 22, 2015 09:36
Kind incompatibility error
{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE PolyKinds #-}
module A where
import Control.Lens
import Data.Vinyl
import GHC.TypeLits
class A f 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
@isomorphism
isomorphism / output.txt
Created September 25, 2015 04:12
parsing with annotated hex dump
----------------------------------------------------------------------
vertex group
0x00004394 - 0x000043c3
0x4394 flags: 1073741826
0x4398 (16 bytes skipped):
0x43a8 vertex array bytes array, # entries: 135800
0x43ac vertex array bytes array offset: 0x47178
0x43b0 (8 bytes skipped):
0x43b8 vertex array stride bytes: 40
@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
@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)
module Main where
import Control.Monad.State
import Data.Map (Map)
import qualified Data.Map as M
import Data.Set (Set)
import qualified Data.Set as S
import Data.List (isPrefixOf, intercalate)
import Data.Char (toLower)
@isomorphism
isomorphism / SetNFA.hs
Created December 19, 2011 06:30
quick NFA using a mock-monadic fold with Set instead of []
import Data.Set (Set)
import qualified Data.Set as S
bindSet :: (Ord a, Ord b) => Set a -> (a -> Set b) -> Set b
bindSet s k = S.unions . S.toList $ S.map k s
foldSet :: (Ord a ) => (a -> b -> Set a) -> a -> [b] -> Set a
foldSet _ a [] = S.singleton a
foldSet f a (x:xs) = bindSet (f a x) (\fax -> foldSet f fax xs)