Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@ruicc
ruicc / gist:5869498
Last active December 19, 2015 00:29
{-# LANGUAGE GADTs, MultiParamTypeClasses, ScopedTypeVariables #-}
module Main where
import System.IO
import Control.Monad.Operational.Simple
data FileIO a where
Open :: FilePath -> FileIO Handle
Get :: Handle -> FileIO String
Echo :: String -> FileIO ()
Close :: Handle -> FileIO String
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE TypeFamilies #-}
import GHC.Prim (Constraint)
import qualified Data.Set as S
import qualified Data.Array.Unboxed as UA
--------------------------------------------------------------------------------
-- RFunctor
@ruicc
ruicc / MakeClass.hs
Created May 25, 2014 13:47
Writer Monad to make classes.
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Main where
import Control.Monad.Writer
import Control.Applicative
main :: IO ()
main = do
(_, w) <- return $ makeClass $ \b -> do
field "foo" 42
@ruicc
ruicc / SearchTreeWithComonad.hs
Last active August 29, 2015 14:01
An Env Comonad example
import Control.Comonad.Env
data Bin a = Node a (Bin a) (Bin a) | Leaf a
deriving Show
bintree_ex :: Bin Int
bintree_ex = Node 5 (Leaf 3) (Node 8 (Leaf 7) (Leaf 10))