Copyright | 2008 Eric Kow |
---|---|
License | GPL |
Maintainer | darcs-devel@darcs.net |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe-Inferred |
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).
Synopsis
- 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
- anyOfClause :: [String] -> Doc
- itemizeVertical :: Int -> [String] -> Doc
- 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"
class Countable a where Source #
Things that have a plural and singular spelling
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"
anyOfClause :: [String] -> Doc Source #
presentParticiple :: String -> String Source #
capitalize :: String -> String Source #
Capitalize the first letter of a word