mrkkrp/text-metrics

Calculate various string metrics efficiently in Haskell

Haskell

45

147 commits

updated Aug 2, 2026

See the code

README

Text Metrics

License BSD3 Hackage Stackage Nightly Stackage LTS CI

The library provides efficient implementations of various string metric algorithms. It works with strict Text values.

The current version of the package implements:

Comparison with the edit-distance package

There is the edit-distance package whose scope overlaps with the scope of this package. The differences are:

  • edit-distance allows specifying costs for every operation when calculating Levenshtein distance (insertion, deletion, substitution, and transposition). This is rarely needed though in real-world applications, IMO.

  • edit-distance only provides Levenshtein distance; text-metrics aims to provide implementations of most string metric algorithms.

  • edit-distance works on Strings, while text-metrics works on strict Text values.

Implementation

Although we originally used C for speed, currently all functions are pure Haskell tuned for performance. See this blog post for more info.

Contribution

Issues, bugs, and questions may be reported in the GitHub issue tracker for this project.

Pull requests are also welcome.

License

Copyright © 2016–present Mark Karpov

Distributed under the BSD 3-clause license.

hamming-distance
haskell
jaccard-similarity
jaro-distance
jaro-winkler-distance
levenshtein-distance
string-metrics

mrkkrp/text-metrics

Calculate various string metrics efficiently in Haskell

Haskell

45

147 commits

updated Aug 2, 2026

See the code

README

Text Metrics

License BSD3 Hackage Stackage Nightly Stackage LTS CI

The library provides efficient implementations of various string metric algorithms. It works with strict Text values.

The current version of the package implements:

Comparison with the edit-distance package

There is the edit-distance package whose scope overlaps with the scope of this package. The differences are:

  • edit-distance allows specifying costs for every operation when calculating Levenshtein distance (insertion, deletion, substitution, and transposition). This is rarely needed though in real-world applications, IMO.

  • edit-distance only provides Levenshtein distance; text-metrics aims to provide implementations of most string metric algorithms.

  • edit-distance works on Strings, while text-metrics works on strict Text values.

Implementation

Although we originally used C for speed, currently all functions are pure Haskell tuned for performance. See this blog post for more info.

Contribution

Issues, bugs, and questions may be reported in the GitHub issue tracker for this project.

Pull requests are also welcome.

License

Copyright © 2016–present Mark Karpov

Distributed under the BSD 3-clause license.

hamming-distance
haskell
jaccard-similarity
jaro-distance
jaro-winkler-distance
levenshtein-distance
string-metrics

Significant stargazers

Alexander Ignatyev

21 followers · starred Sep 2016

Cristian A. Ontivero

35 followers · starred Feb 2017