BSD-3-Clause licensed by Gabriel Gonzalez
Maintained by [email protected]
This version can be pinned in stack with:pipes-4.3.7@sha256:02c0885fcf7b78e7b5a54f88c352303aa191c543bf7cd4a518374499dd156714,3632

Module documentation for 4.3.7

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


Major upgrade of pipes to no longer use Proxy type class