Skip to content

Instantly share code, notes, and snippets.

@notae
notae / HList.hs
Created July 22, 2014 05:24
HList: Heterogeneous List
{-
Heterogeneous List Example
from
Strongly Typed Heterogeneous Collections
http://okmij.org/ftp/Haskell/HList-ext.pdf
(This HList definition is different from the version in Hackage)
-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeOperators #-}
@notae
notae / STMonad.hs
Created July 20, 2014 16:36
ST Monad Example
-- ST Monad Example
import Control.Monad.ST (ST)
import Control.Monad.ST (runST)
import Data.STRef (STRef)
import Data.STRef (modifySTRef)
import Data.STRef (newSTRef)
import Data.STRef (readSTRef)
prog :: Int -> ST s Int
@notae
notae / ListTExample.hs
Created July 15, 2014 18:31
ListT Example
-- ListT Example
import Control.Monad.List (ListT(..))
import Control.Monad.State (State)
import Control.Monad.State (modify)
import Control.Monad.Trans (lift)
import Control.Monad.Writer (Writer)
import Control.Monad.Writer (tell)
liftList :: (Monad m) => [a] -> ListT m a
@notae
notae / CFPFD.hs
Created July 10, 2014 16:17
Constraint Programming over Finite Domain in Haskell (and Sudoku example)
{-|
Module : CFPFD
Description : Constraint Functional Programming over Finite Domain
Copyright : (c) notae@me.com, 2014
License : BSD-style
Maintainer : notae@me.com
Stability : experimental
Portability : POSIX
This module provides interfaces for constraint programming
@notae
notae / MultiTypeMap.hs
Last active August 29, 2015 14:03
[Haskell] Example of storing multiple types into single Map using Enum
-- Example of storing multiple types into single Map using Enum
import Control.Monad.State (State)
import Control.Monad.State (runState)
import Control.Monad.State (evalState)
import Control.Monad.State (gets)
import Control.Monad.State (modify)
import Control.Monad (liftM2)
import Data.Map (Map)
import Data.Maybe (fromMaybe)