úÎ3© 2015 Mark Karpov BSD 3 clause(Mark Karpov <markkarpov@openmailbox.org> experimentalportableNone+QSlug. Textual value inside is always guaranteed to have the following qualities:it's not empty;Qit consists only of alpha-numeric groups of characters (words) separated by '-'w dashes in such a way that entire slug cannot start or end in a dash and also two dashes in a row cannot be found;;every character with defined notion of case is lower-cased.]Slugs are good for semantic URLs and also can be used as identifier of a sort in some cases.Get textual representation of .This exception is thrown by 1 when its input cannot be converted into proper .Create  from {, all necessary transformations are applied. Argument of this function can be title of an article or something like that.Note that result is inside %, that means you can just get it in ), in more complex contexts it will throw .*This function also have a useful property: #mkSlug = mkSlug >=> mkSlug . unSlugConvert ƒ to possibly empty collection of words. Every word is guaranteed to be non-empty alpha-numeric lowercased sequence of characters.       slug_4n6BQ81fj6GBRWZ4FuglmrWeb.SlugSlugunSlug SlugException InvalidInputmkSlugtext_BKzOMwCPkuv5n8xwLM3CQGData.Text.InternalTextexcep_DxmHQqAeYkJ0KUsVVnEGIOControl.Monad.Catch MonadThrowbaseGHC.BaseMaybe getSlugWords$fPathPieceSlug$fPersistFieldSqlSlug$fPersistFieldSlug$fFromJSONSlug $fToJSONSlug$fExceptionSlugException$fShowSlugException