A modern parser combinator library with convenient diagnostics

Version on this page:2.1.2
LTS Haskell 22.30:2.1.4@rev:1
Stackage Nightly 2024-07-21: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.1.2@sha256:90a57d9b5565f3ede147a6775ec7bfbed3e4a49b3e0544bb6cfa798661892f7f,3442


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.1.2 [2021.11.16]

  • Add an Eq Strand instance.
  • Allow building with hashable-1.4.*.
  • Drop support for pre-8.0 versions of GHC.

2.1.1 [2021.02.18]

  • Allow building with lens-5.*.
  • The build-type has been changed from Custom to Simple. To achieve this, the doctests test suite has been removed in favor of using cabal-docspec to run the doctests.

2.1 [2019.09.06]

  • Support building with base-4.13 (GHC 8.8).
  • Dropped support for GHC < 7.8.
  • Print line numbers in the gutter.
  • Switched to prettyprinter from ansi-wl-pprint
  • Switched from INLINE to INLINABLE to help fight compile time woes while still allowing aggressive inline when you want it.
  • Removed Text.Trifecta.Util.Array. primitive now exists.

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