A modern parser combinator library with convenient diagnostics

Version on this page:2@rev:4
LTS Haskell 22.29:2.1.4@rev:1
Stackage Nightly 2024-07-20:2.1.4@rev:1
Latest on Hackage:2.1.4@rev:1

See all snapshots trifecta appears in

BSD-3-Clause licensed by Edward A. Kmett
Maintained by Edward A. Kmett
This version can be pinned in stack with:trifecta-2@sha256:41aa6217a77be8f0c33a34f61142221b0f801f9f4a386026f55f3843f9f67c75,3777


Hackage Build Status

This package provides a parser that focuses on nice diagnostics.

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or on the #haskell IRC channel on

-Edward Kmett


2 [2018.07.03]

  • stepParser no longer takes a ByteString.
  • Add a Text.Trifecta.Tutorial module, as well as lots of documentation.
  • Add a foldResult function to Text.Trifecta.Result.
  • Allow building with containers-0.6.

  • Support ansi-wl-pprint-0.6.8


  • Support doctest-0.12


  • Make trifecta forward -Wcompatible:
    • Adding Semigroup instances to correspond to every existing Monoid instance. This requires adding a Semigroup constraint to the Monoid instance for Parser to emulate the Semigroup-Monoid superclass relation that will be present in future versions of GHC.
    • Adding a MonadFail instance for Parser
  • Revamp Setup.hs to use cabal-doctest. This makes it build with Cabal-2.0, and makes the doctests work with cabal new-build and sandboxes.

  • Add this changelog to the extra-souce-files in trifecta.cabal so that the changelog will appear on Hackage


  • Enable support for blaze-html-0.9 and blaze-markup-0.8


  • Remove redundant constraints from DeltaParsingā€™s class methods. This is required for trifecta to build on GHC 8.0.2.


  • Version bumps to support GHC 8
  • Add line/col numbers to parse results by giving a list of all deltas when errors happen.


  • lens 4.13 support
  • It is a Profunctor
  • Builds clean on GHC 7.10.

  • Support newer utf8-string versions and GHC 7.10

  • Work around lack of the old preEscapedString export in near-current blaze-markup.

  • Work around new exports in blaze.


  • Parsers 0.12.1 support. This removes many Show constraints introduced after 1.4


  • Properly PVP compliant point release for the parsers changes to properly handle notFollowedBy


  • Accidentally non-PVP compliant point release.


  • GHC 7.8.1 compatibility


  • Simplified AsResult
  • lens 4.0 compatibility

  • Updated array dependency for compatibility with GHC 7.8


  • Bug fix for the Monoid instance in response to issue #15
  • Made the Semigroup instance match the Monoid as well.


  • Changed the Monoid instance for Parser in response to issue #14
  • Exported MonadErr class for raising Errs