Skip to content

Instantly share code, notes, and snippets.

View michaelt's full-sized avatar

michaelt michaelt

  • twitter antiphasis_
View GitHub Profile
-- file Hello.hscript
"Hello world"
let val = id
let assert = id
let a = 3
val a
let square x = x * x
@michaelt
michaelt / gist:7155204
Created October 25, 2013 14:06
runSubPipeT
{-| Many actions in base monad transformers cannot be automatically
'Control.Monad.Trans.Class.lift'ed. These functions lift these remaining
actions so that they work in the 'Proxy' monad transformer.
-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE Rank2Types #-}
module Pipes.Lift (
-- * ErrorT
@michaelt
michaelt / gist:7207991
Last active December 26, 2015 20:19
unlines . lines
{-#LANGUAGE OverloadedStrings#-}
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.IO as TL
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import Pipes
import qualified Pipes.Text as PT
import qualified Data.ByteString.Lazy.Char8 as BL
import qualified Data.ByteString.Char8 as B
{-#LANGUAGE LambdaCase#-}
import qualified Pipes.ByteString as BP
import Pipes
import Pipes.Parse
import qualified Data.ByteString as B
import qualified Data.Text as T
import Data.Text (Text(..))
import qualified Data.Text.IO as T
import Data.Text.Encoding
import Data.Text.Encoding.Error
{-# LANGUAGE BangPatterns, CPP, ForeignFunctionInterface, GeneralizedNewtypeDeriving, MagicHash,
UnliftedFFITypes #-}
-- This module lifts assorted materials from Brian O'Sullivan's text package
-- especially Data.Text.Encoding in order to define a pipes-appropriate
-- streamDecodeUtf8
module Pipes.Text.Internal
( Decoding(..)
, streamDecodeUtf8
) where
import Control.Monad.ST.Unsafe (unsafeIOToST, unsafeSTToIO)
@michaelt
michaelt / TestStreamUtf8.hs
Created February 13, 2014 17:29
streamUtf8 tests
{-#LANGUAGE ScopedTypeVariables#-}
import Test.QuickCheck hiding ((.&.))
import Test.Framework (Test, testGroup, defaultMain)
import Test.Framework.Providers.QuickCheck2 (testProperty)
import Debug.Trace (trace)
import Control.Exception (SomeException, evaluate, try)
import System.IO.Unsafe (unsafePerformIO)
import Data.Bits ((.&.))
@michaelt
michaelt / bench.txt
Created February 13, 2014 19:21
benchmarks for streamUtf8
benchmarking lazy text
mean: 3.904823 ms, lb 3.844596 ms, ub 4.018289 ms, ci 0.950
std dev: 410.2641 us, lb 239.7706 us, ub 612.5513 us, ci 0.950
benchmarking new conduit
mean: 7.473182 ms, lb 7.354699 ms, ub 7.651235 ms, ci 0.950
std dev: 739.4707 us, lb 538.1933 us, ub 975.3947 us, ci 0.950
@michaelt
michaelt / utf8-bench.hs
Created February 14, 2014 03:55
utf8-bench
{-# LANGUAGE RankNTypes #-}
import Data.Conduit
import qualified Data.Conduit.Text as CT
import Criterion.Main
import qualified Data.Text as T
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.Encoding as TLE
import qualified Data.ByteString as S
import qualified Data.ByteString.Lazy as L
import qualified Data.Conduit.List as CL
@michaelt
michaelt / parser.hs
Created February 20, 2014 20:20
parser zoom trouble
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE BangPatterns#-}
{-# LANGUAGE RankNTypes #-}
import Blaze.ByteString.Builder (Builder, fromByteString, toByteString)
import Control.Exception (Exception)
import Control.Monad.Trans.Class (lift)
import Data.ByteString (ByteString)
import qualified Data.ByteString as S
import qualified Data.ByteString.Lazy as L
import Data.Monoid
@michaelt
michaelt / kate.html
Last active August 29, 2015 14:01
DataHinds syntax highlighting
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="pandoc" />
<title></title>
<style type="text/css">code{white-space: pre;}</style>
<style type="text/css">
table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {