Copyright | 2008 Eric Kow |
---|---|
License | GPL |
Maintainer | darcs-devel@darcs.net |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell2010 |
This modules provides rudimentary natural language generation (NLG) utilities. That is, generating natural language from a machine representation. Initially, only English is supported at all. Representations are implemented for:
- countable nouns (plurality); and
- lists of clauses (foo, bar and/or baz).
- englishNum :: Countable n => Int -> n -> ShowS
- class Countable a where
- newtype Noun = Noun String
- data Pronoun = It
- data This = This Noun
- andClauses :: [String] -> String
- orClauses :: [String] -> String
- itemize :: String -> [String] -> String
- presentParticiple :: String -> String
- capitalize :: String -> String
Documentation
englishNum :: Countable n => Int -> n -> ShowS Source #
englishNum 0 (Noun "watch") "" == "watches" englishNum 1 (Noun "watch") "" == "watch" englishNum 2 (Noun "watch") "" == "watches"
This only distinguishes between nouns with a final -ch, and nouns which do not. More irregular nouns will just need to have their own type
plural (Noun "batch") "" == "batches" plural (Noun "bat") "" == "bats" plural (Noun "mouse") "" == "mouses" -- :-(
singular This (Noun "batch") "" == "this batch" plural This (Noun "batch") "" == "these batches"
andClauses :: [String] -> String Source #
Given a list of things, combine them thusly:
orClauses ["foo", "bar", "baz"] == "foo, bar or baz"
orClauses :: [String] -> String Source #
Given a list of things, combine them thusly:
orClauses ["foo", "bar", "baz"] == "foo, bar or baz"
presentParticiple :: String -> String Source #
capitalize :: String -> String Source #
Capitalize the first letter of a word