module Domain.Text where import Domain.Prelude import Data.Text import qualified Data.Char as Char mapFirstChar :: (Char -> Char) -> Text -> Text mapFirstChar Char -> Char fn = forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap (\ (Char a, Text b) -> Char -> Text -> Text cons (Char -> Char fn Char a) Text b) forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . Text -> Maybe (Char, Text) uncons ucFirst :: Text -> Text ucFirst = (Char -> Char) -> Text -> Text mapFirstChar Char -> Char Char.toUpper lcFirst :: Text -> Text lcFirst = (Char -> Char) -> Text -> Text mapFirstChar Char -> Char Char.toLower