countable-inflections: Countable Text Inflections

[ library, mit, text ] [ Propose Tags ]

Provides methods for singularizing and pluralizing text. The library is based on Rails' inflections.

[Skip to Readme]




Manual Flags


Turn on development settings.


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees


Versions [RSS] 0.0.1, 0.1.0, 0.2.0, 0.3.0
Change log
Dependencies base (>=4.6 && <4.10), bytestring, exceptions (>=0.6 && <0.9), pcre-light, text (>=0.2 && <1.3) [details]
License MIT
Copyright 2016 Brady Ouren
Author Brady Ouren <>
Maintainer Brady Ouren <>
Category Text
Home page
Bug tracker
Source repo head: git clone
Uploaded by tippenein at 2016-10-04T01:49:07Z
Distributions NixOS:0.3.0
Downloads 2199 total (5 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2016-10-04 [all 1 reports]

Readme for countable-inflections-0.1.0

[back to package description]

Countable Inflections

License MIT Hackage Stackage LTS Build Status

This library implements pluralization and singularization in a similar way to the rails inflectors

It uses regexes to define the non-standard transformations and therefore doesn't provide much safety. If you need to provide the same pluralization and singularization which rails does out of the box, this will work the same. If you want more you should be using inflections-hs which uses megaparsec to give you more guarantees


λ: pluralize "person"

λ: singularize "branches"

These can also be given custom inflection matchers

λ: :t singularizeWith
[Inflection] -> Text -> Text

There are 3 different types of transformations:

Match (takes a PCRE regex and a replacement string)

λ: :t makeMatchMapping
[(RegexPattern, RegexReplace)] -> [Inflection]

λ: let mapping = makeMatchMapping [("(octop)us", "\1i")]
λ: pluralizeWith mapping "octopus"

Irregular (from singular to plural with no greater pattern)

λ: :t makeIrregularMapping
[(Singular, Plural)] -> [Inflection]

λ: let mapping = makeIrregularMapping [("zombie","zombies")]
λ: pluralizeWith mapping "zombie"

Uncountable (doesn't have a mapping, word stays the same) so it has the type:

[Text] -> [Inflection]


MIT - see the LICENSE file.