Skip to content

Instantly share code, notes, and snippets.

View snoyberg's full-sized avatar

Michael Snoyman snoyberg

View GitHub Profile
@snoyberg
snoyberg / .gitignore
Created June 19, 2018 15:07
Length matched vectors
*~
*.swp
output.html
bad-output.html
@snoyberg
snoyberg / foldmapm.hs
Created June 3, 2018 22:28
Benchmarking implementations of foldMapM
#!/usr/bin/env stack
-- stack --resolver lts-11.10 script --optimize
import Gauge
import qualified Data.Vector as V
import qualified Data.Foldable as F
import Data.Functor.Identity (runIdentity)
import Data.Monoid (Sum (..))
import Data.Semigroup (Semigroup (..))
import Control.Applicative (liftA2)
#!/usr/bin/env stack
-- stack --resolver lts-11.8 script
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wall -Werror #-}
import Data.Text (Text, pack)
#!/usr/bin/env stack
-- stack --resolver lts-11.5 script
{-# LANGUAGE OverloadedStrings #-}
import Network.HTTP.Types
import Network.Wai
import Network.Wai.Handler.Warp
import Control.Monad
import System.Timeout
import qualified Data.ByteString.Char8 as B8
@snoyberg
snoyberg / pvp-compliance.hs
Last active February 24, 2018 04:01
Simple script: does every dependency in library and executable stanzas have an upper bound?
#!/usr/bin/env stack
-- stack --resolver lts-10.3 script --optimize
{-# LANGUAGE OverloadedStrings, NoImplicitPrelude #-}
import ClassyPrelude.Conduit
import Data.Conduit.Tar
import System.Directory
import System.FilePath
import Distribution.Types.CondTree
import Distribution.Types.Dependency
import Distribution.Types.PackageName
@snoyberg
snoyberg / replicate-bench.hs
Created January 18, 2018 12:14
Comparing various ways to make a Builder with a given number of nulls
#!/usr/bin/env stack
-- stack --resolver lts-10.3 script --optimize
{-# OPTIONS_GHC -Wall -Werror #-}
import Prelude hiding (rem)
import Gauge.Main
import Data.ByteString.Builder as B
import Data.ByteString.Builder.Extra
import Data.ByteString.Builder.Prim as P
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
@snoyberg
snoyberg / html-cleanup.hs
Created December 26, 2017 18:03
Small example of xml-conduit for cleaning up some HTML: remove unneeded <span>s and convert <br>s to \n
#!/usr/bin/env stack
-- stack --resolver lts-10.0 script
{-# LANGUAGE OverloadedStrings #-}
import Text.XML
import qualified Data.Map.Strict as Map
main :: IO ()
main = do
Document x (Element n a nodes) y <- Text.XML.readFile def "foo.html"
Text.XML.writeFile def "foo2.html" $ Document x (Element n a $ concatMap goN nodes) y
$ stack build vector-algorithms --resolver lts-6.35
primitive-0.6.1.0: using precompiled package
vector-0.11.0.0: configure
vector-0.11.0.0: build
vector-0.11.0.0: copy/register
vector-algorithms-0.7.0.1: configure
Completed 3 action(s).
-- While building custom Setup.hs for package vector-algorithms-0.7.0.1 using:
/Users/michael/.stack/setup-exe-cache/x86_64-osx/Cabal-simple_mPHDZzAJ_1.22.5.0_ghc-7.10.3 --builddir=.stack-work/dist/x86_64-osx/Cabal-1.22.5.0 configure --with-ghc=/Users/michael/.stack/programs/x86_64-osx/ghc-7.10.3/bin/ghc --with-ghc-pkg=/Users/michael/.stack/programs/x86_64-osx/ghc-7.10.3/bin/ghc-pkg --user --package-db=clear --package-db=global --package-db=/Users/michael/.stack/snapshots/x86_64-osx/lts-6.35/7.10.3/pkgdb --libdir=/Users/michael/.stack/snapshots/x86_64-osx/lts-6.35/7.10.3/lib --bindir=/Users/michael/.stack/snapshots/x86_64-osx/lts-6.35/7.10.3/bin --datadir=/Users/michael/.stack/snapshots/x86_64-osx/lts-6.35/7.10.3/share --libexecdir=/Users/michael/.stack/snapshots/x8
pub struct RemoveMax<I: Iterator>(State<I>);
enum State<I: Iterator> {
Empty,
Start(I),
Running(I, I::Item, Vec<I::Item>),
Yielding(I, I::Item, std::vec::IntoIter<I::Item>),
Draining(std::vec::IntoIter<I::Item>),
}
travis_fold:start:worker_info
Worker information
hostname: 264743a7-af9e-44b0-8e75-6dfebeb8b8cd@1.i-0a75a86-production-2-worker-org-ec2.travisci.net
version: v3.4.0 https://github.com/travis-ci/worker/tree/ce0440bc30c289a49a9b0c21e4e1e6f7d7825101
instance: ad2ca4c travisci/ci-garnet:packer-1503972846 (via amqp)
startup: 588.67469ms
travis_fold:end:worker_info
travis_fold:start:system_info
Build system information
Build language: generic