Compositional pipelines

Version on this page:4.3.2
LTS Haskell 9.14:4.3.6
Stackage Nightly 2017-11-20:4.3.7
Latest on Hackage:4.3.7
BSD3 licensed by Gabriel Gonzalez
Maintained by Gabriel439@gmail.com

Module documentation for 4.3.2

pipes is a clean and powerful stream processing library that lets you build and connect reusable streaming components

Advantages over traditional streaming libraries:

  • Concise API: Use simple commands like for, (>->), await, and yield

  • Blazing fast: Implementation tuned for speed, including shortcut fusion

  • Lightweight Dependency: pipes is small and compiles very rapidly, including dependencies

  • Elegant semantics: Use practical category theory

  • ListT: Correct implementation of ListT that interconverts with pipes

  • Bidirectionality: Implement duplex channels

  • Extensive Documentation: Second to none!

Import Pipes to use the library.

Read Pipes.Tutorial for an extensive tutorial.



  • Documentation fix


  • Fix implementation of pass in MonadWriter instance for Proxy


  • Support Semigroup being a super-class of Monoid


  • Increase upper bound on mmorph


  • Make X a synonym for Data.Void.Void


  • BUG FIX: Fix MMonad instance for ListT
    • The old instance was an infinite loop


  • Support building against ghc-7.4


  • BREAKING CHANGE: Remove Alternative/MonadPlus instances for Proxy
    • See commit 08e7302f43dbf2a40bd367c5ee73ee3367e17768 which explains why
  • Add Traversable instance for ListT
  • New MonadThrow/MonadCatch/MMonad/Semigroup/MonadZip instances for ListT
  • New MonadThrow/MonadCatch instances for Proxy
  • Fix lower bound on mtl
  • Increase upper bound on optparse-applicative


  • BREAKING CHANGE: Switch from ErrorT to ExceptT
  • Add Foldable instance for ListT
  • Fix all warnings
  • Enable foldr/build fusion for toList


  • Increase lower bound on criterion
  • Increase upper bound on transformers for tests/benchmarks
  • Optimize code by delaying INLINABLE annotations


  • Increase upper bound on transformers
  • Prepare for MRP (Monad of no Return Proposal)


  • Increase lower bound on deepseq
  • Add unfoldr
  • Add loop
  • Add toListM'
  • Improve efficiency of drop
  • License tutorial under Creative Commons license


  • Increase lower bound on base
  • Add diagrams to Pipes.Core documentation
  • Add mapM_
  • Add takeWhile'
  • Add seq
  • Improve efficiency of toListM


  • Increase upper bound on criterion


  • Increase upper bound on criterion
  • Add Monoid instance for Proxy


  • Increase lower bound on mtl
  • Re-export void
  • Add fold'
  • Add foldM'


  • Increase upper bounds on transformers and mtl


  • Add runListT
  • Add MMonad instance for Proxy
  • Add repeatM
  • Add laws to documentation of Pipes.Prelude utilities


  • Remove Haskell98 support
  • Use internal X type instead of Data.Void
  • Document Pipes.Lift module:w
  • Add drain
  • Add sequence


  • Improve performance of each
  • Add tutorial appendix explaining how to work around quadratic time complexity


  • Remove WriterT and RWST benchmarks
  • Add Enumerable instance for ErrorT
  • Add cabal flag for Haskell98 compilation
  • Add several rewrite rules
  • Add mtl instances for ListT
  • Fix implementation of pass, which did not satisfy Writer laws
  • Implement fail for ListT
  • Add type synonym table to tutorial appendix
  • Add QuickCheck tests for pipes laws
  • Add mapFoldable
  • Add Monoid instance for ListT
  • Add manual proofs of pipes laws in laws.md


Major upgrade of pipes to no longer use Proxy type class

Used by 156 packages:
accelerate-examples, agentx, annah, argon, bgzf, BiobaseInfernal, blosum, borel, b-tree, ceilometer-common, clr-bindings, clr-inline, clr-win-linker, colchis, convert-annotation, daemons, dash-haskell, declarative, deka-tests, dirstream, diversity, DPutils, dynamic-graph, engine-io-growler, EtaMOO, fasta, FastxPipe, flamingra, flat-mcmc, flowdock, Frames, gcodehs, geolite-csv, ghc-mod, git-fmt, glazier-pipes, glazier-react-examples, growler, habit, halma-gui, hasty-hamiltonian, hfmt, hierarchy, highlight, hist-pl, hist-pl-lexicon, hsnsq, http-pony, http-pony-serve-wai, http-pony-transformer-http, https-everywhere-rules, hyperdrive, imap, inspection-proxy, Lambdaya, latest-npm-version, lentil, libsystemd-journal, liveplot, lmdb-high-level, marquise, mcpi, mighty-metropolis, minecraft-data, modify-fasta, morte, mvc, nc-indicators, neko-obfs, neural, nullpipe, nylas, omnifmt, partage, pianola, pipe-enumerator, pipes-aeson, pipes-async, pipes-attoparsec, pipes-bgzf, pipes-binary, pipes-break, pipes-bytestring, pipes-bzip, pipes-cacophony, pipes-category, pipes-cellular, pipes-cellular-csv, pipes-cereal, pipes-cereal-plus, pipes-cliff, pipes-concurrency, pipes-courier, pipes-csv, pipes-errors, pipes-extras, pipes-fastx, pipes-files, pipes-fluid, pipes-group, pipes-http, pipes-illumina, pipes-interleave, pipes-io, pipes-kafka, pipes-key-value-csv, pipes-lines, pipes-lzma, pipes-misc, pipes-mongodb, pipes-network, pipes-network-tls, pipes-p2p, pipes-p2p-examples, pipes-parse, pipes-postgresql-simple, pipes-protolude, pipes-random, pipes-rt, pipes-s3, pipes-safe, pipes-shell, pipes-sqlite-simple, pipes-text, pipes-transduce, pipes-vector, pipes-wai, pipes-websockets, pipes-zeromq4, pipes-zlib, pitchtrack, postie, process-streaming, pub, purescript, pushme, rakhana, rasa, regex-tdfa-pipes, remotion, sdr, speedy-slice, spoty, streaming-eversion, streaming-utils, tailfile-hinotify, telegram-bot, teleshell, top, tpar, tsne, vgrep, VKHS, warc, wobsurv, WordAlignment
comments powered byDisqus