Hoogle Search

Within LTS Haskell 24.52 (ghc-9.10.3)

Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.

  1. data IntMap a

    relude Relude.Container.Reexport

    A map of integers to values a.

  2. inverseMap :: (Bounded a, Enum a, Ord k) => (a -> k) -> k -> Maybe a

    relude Relude.Enum

    inverseMap f creates a function that is the inverse of a given function f. It does so by constructing Map internally for each value f a. The implementation makes sure that the Map is constructed only once and then shared for every call. Memory usage note: don't inverse functions that have types like Int as their input. In this case the created Map will have huge size. The complexity of reversed mapping is <math>. Performance note: make sure to specialize monomorphic type of your functions that use inverseMap to avoid Map reconstruction. One of the common inverseMap use-case is inverting the show or a show-like function.

    >>> data Color = Red | Green | Blue deriving (Show, Enum, Bounded)
    
    >>> parse = inverseMap show :: String -> Maybe Color
    
    >>> parse "Red"
    Just Red
    
    >>> parse "Black"
    Nothing
    
    Correctness note: inverseMap expects injective function as its argument, i.e. the function must map distinct arguments to distinct values. Typical usage of this function looks like this:
    data GhcVer
    = Ghc802
    | Ghc822
    | Ghc844
    | Ghc865
    | Ghc881
    deriving (Eq, Ord, Show, Enum, Bounded)
    
    showGhcVer :: GhcVer -> Text
    showGhcVer = \case
    Ghc802 -> "8.0.2"
    Ghc822 -> "8.2.2"
    Ghc844 -> "8.4.4"
    Ghc865 -> "8.6.5"
    Ghc881 -> "8.8.1"
    
    parseGhcVer :: Text -> Maybe GhcVer
    parseGhcVer = inverseMap showGhcVer
    

  3. bimapBoth :: Bifunctor f => (a -> b) -> f a a -> f b b

    relude Relude.Extra.Bifunctor

    Maps a function over both elements of a bifunctor.

    >>> bimapBoth length ([True], [False, True])
    (1,2)
    
    >>> map (bimapBoth not) [Left True, Right False]
    [Left False,Right True]
    

  4. bimapF :: (Functor f, Bifunctor p) => (a -> c) -> (b -> d) -> f (p a b) -> f (p c d)

    relude Relude.Extra.Bifunctor

    Fmaps functions for nested bifunctor. Short for fmap (bimap f g).

    >>> bimapF not length $ Just (False, ['a', 'b'])
    Just (True,2)
    

  5. foldMap1 :: (Foldable1 f, Semigroup m) => (a -> m) -> f a -> m

    relude Relude.Extra.Foldable1

    Map each element of the non-empty structure to a semigroup, and combine the results.

    >>> foldMap1 SG.Sum (1 :| [2, 3, 4])
    Sum {getSum = 10}
    
    >>> foldMap1 show (123 :| [456, 789, 0])
    "1234567890"
    

  6. class StaticMap t => DynamicMap t

    relude Relude.Extra.Map

    Modifiable Map.

  7. class StaticMap t

    relude Relude.Extra.Map

    Read-only map or set. Contains polymorphic functions which work for both sets and maps.

  8. fmapToFst :: Functor f => (a -> b) -> f a -> f (b, a)

    relude Relude.Extra.Tuple

    Like fmap, but also keep the original value in the snd position. A dual to fmapToSnd.

    >>> fmapToFst show [3, 10, 2]
    [("3",3),("10",10),("2",2)]
    

  9. fmapToSnd :: Functor f => (a -> b) -> f a -> f (a, b)

    relude Relude.Extra.Tuple

    Like fmap, but also keep the original value in the fst position. A dual to fmapToFst.

    >>> fmapToSnd show [3, 10, 2]
    [(3,"3"),(10,"10"),(2,"2")]
    

  10. asumMap :: forall b m f a . (Foldable f, Alternative m) => (a -> m b) -> f a -> m b

    relude Relude.Foldable.Fold

    Alternative version of asum that takes a function to map over.

    >>> asumMap (\x -> if x > 2 then Just x else Nothing) [1..4]
    Just 3
    

Page 515 of many | Previous | Next