module Data.FuzzySet.Utils ( (<$$>) , (<$$$>) , safeHead , enclosedIn , substr ) where import Data.Text (Text, cons, snoc) import qualified Data.Text as Text (<$$>) :: (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b) <$$> :: forall (f :: * -> *) (g :: * -> *) a b. (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b) (<$$>) = (g a -> g b) -> f (g a) -> f (g b) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap ((g a -> g b) -> f (g a) -> f (g b)) -> ((a -> b) -> g a -> g b) -> (a -> b) -> f (g a) -> f (g b) forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> b) -> g a -> g b forall a b. (a -> b) -> g a -> g b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap infixr 8 <$$> (<$$$>) :: (Functor f, Functor g, Functor h) => (a -> b) -> f (g (h a)) -> f (g (h b)) <$$$> :: forall (f :: * -> *) (g :: * -> *) (h :: * -> *) a b. (Functor f, Functor g, Functor h) => (a -> b) -> f (g (h a)) -> f (g (h b)) (<$$$>) = (g (h a) -> g (h b)) -> f (g (h a)) -> f (g (h b)) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap ((g (h a) -> g (h b)) -> f (g (h a)) -> f (g (h b))) -> ((a -> b) -> g (h a) -> g (h b)) -> (a -> b) -> f (g (h a)) -> f (g (h b)) forall b c a. (b -> c) -> (a -> b) -> a -> c . (h a -> h b) -> g (h a) -> g (h b) forall a b. (a -> b) -> g a -> g b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap ((h a -> h b) -> g (h a) -> g (h b)) -> ((a -> b) -> h a -> h b) -> (a -> b) -> g (h a) -> g (h b) forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> b) -> h a -> h b forall a b. (a -> b) -> h a -> h b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap infixr 8 <$$$> safeHead :: [a] -> Maybe a safeHead :: forall a. [a] -> Maybe a safeHead [] = Maybe a forall a. Maybe a Nothing safeHead (a h : [a] _) = a -> Maybe a forall a. a -> Maybe a Just a h enclosedIn :: Text -> Char -> Text enclosedIn :: Text -> Char -> Text enclosedIn Text str Char char = Char char Char -> Text -> Text `cons` Text str Text -> Char -> Text `snoc` Char char substr :: Int -> Int -> Text -> Text substr :: Int -> Int -> Text -> Text substr Int n Int m = Int -> Text -> Text Text.take Int n (Text -> Text) -> (Text -> Text) -> Text -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> Text -> Text Text.drop Int m