Skip to content

Instantly share code, notes, and snippets.

@nc6
nc6 / typeable.hs
Last active August 29, 2015 14:06
Problems with ConstraintKinds and Typeable
{-# LANGUAGE ConstraintKinds, GADTs #-}
{-# LANGUAGE DataKinds, PolyKinds, AutoDeriveTypeable #-}
{-# LANGUAGE StandaloneDeriving, DeriveDataTypeable #-}
import Data.Proxy
import Data.Typeable
data Foo (p :: (*, *))
data Dict ctx where
@nc6
nc6 / Main.hs
Last active August 29, 2015 14:06
CNDF Maze-exploring challenge
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Lens
import Control.Monad (when)
import Data.ByteString.Char8 (ByteString)
import qualified Data.ByteString.Char8 as BS
import Data.ByteString.Lazy.Char8 (toStrict)
import Data.Char (toLower)
@nc6
nc6 / hdup.hs
Created July 2, 2014 12:34
Test of behaviour using hDuplicateTo on multiple threads.
import GHC.IO.Handle
import Control.Concurrent (forkIO, forkOS, threadDelay)
import System.Directory (createDirectoryIfMissing)
import System.Environment
import System.IO
main ::IO ()
main = do
putStrLn "Writing to stdout"
mapM_ (createDirectoryIfMissing True) ["output_io", "output_os"]
@nc6
nc6 / demo.html
Last active August 29, 2015 13:57
Smith Waterman Demo
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Smith-Waterman Demo</title>
</head>
<body>
<form>
<label for="word1">Word 1</label>
<input name="word1" id="word1" value="ACACACTA" />
@nc6
nc6 / Foreign.chs
Created February 13, 2014 16:07
Bindings to ioctl for setting/getting window size.
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE EmptyDataDecls #-}
#include <sys/ttycom.h>
#include <sys/ioctl.h>
#c
typedef struct winsize winsize;
#endc
@nc6
nc6 / ChattyCalculator.hs
Created January 22, 2014 14:54
A 'chatty calculator' written in Haskell for the Cambridge software craftsmanship meetup group.
module ChattyCalculator where
import Prelude hiding (exponent, subtract)
import Control.Applicative hiding ((<|>))
import Data.List (intercalate)
import Text.Parsec
import Text.Parsec.Expr
@nc6
nc6 / bigsed.hs
Created November 18, 2013 11:44
Takes a file of replacements and applies it to every field in another file.
{-# LANGUAGE LambdaCase #-}
module Main where
import Control.Monad (liftM)
import qualified Data.ByteString.Char8 as B
import qualified Data.ByteString.Lazy.Char8 as LB
import qualified Data.Map as Map
import Data.Maybe (fromMaybe, catMaybes)
import Data.Monoid (mconcat)
@nc6
nc6 / splitList.hs
Last active December 28, 2015 08:09
Small script to pull out lines from one file based on another. Basically grep -f but using sorting and much much faster.
{-# LANGUAGE LambdaCase #-}
module Main where
import Control.Monad (liftM)
import qualified Data.ByteString.Char8 as BS
import qualified Data.ByteString.Lazy.Char8 as B
import Data.Monoid (mconcat)
import Data.Ord()
import System.Environment (getArgs)
@nc6
nc6 / mannwhitney.hs
Last active December 22, 2015 17:58
Implementation of Mann-Whitney U test in Haskell, along with various approximations.
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE FlexibleContexts #-}
module Statistics.MannWhitney where
import Prelude hiding (sort)
import Control.Monad (forM)
import Data.List (genericLength, intersect, intercalate, nub, sortBy, splitAt)
import Data.Number.Erf (normcdf)
@nc6
nc6 / app.models.dao.ParameterTypeDO.scala
Created April 25, 2013 08:58
Demonstration of the issue in playframework/play-slick#48. Results in an error: 'ReflectError: value ParameterTypes is not a package' during Slick DDL generation.
package models.dao
import play.api.db.slick.Config.driver.simple._
/**
* A parameter to a role type.
*/
private[models] case class ParameterTypeDO(id: Long, name: String, description: Option[String])
private[models] class ParameterTypes extends Table[ParameterTypeDO]("PARAMETER_TYPES") with StandardQueries[ParameterTypeDO] {