Skip to content

Instantly share code, notes, and snippets.

View bens's full-sized avatar

Ben Sinclair bens

  • Sydney, Australia
  • 07:12 (UTC +10:00)
View GitHub Profile
@bens
bens / gist:6199924
Last active December 20, 2015 21:49
Applicative and Monad wrappers for Command library
import Control.Applicative
import Control.Concurrent (forkIO, newEmptyMVar, putMVar, takeMVar)
import Control.Monad
import Control.Monad.Trans.Class
import Control.Monad.IO.Class
import System.Command
newtype Cmd m a = Cmd { runCmd :: m (Either (ExitCode, String) a) }
cmd :: MonadIO m => FilePath -> [String] -> String -> Cmd m String
@bens
bens / gist:4276414
Created December 13, 2012 13:34
Semigroup on subsets of heterogeneous lists.
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
module Sublist (S, L, R, Sublist, sublistHead, sublistTail, fromSublist) where
import Control.Applicative ((<|>))
import qualified Control.Lens as L
import Data.Maybe (fromMaybe)