Hoogle Search

Within LTS Haskell 24.33 (ghc-9.10.3)

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

  1. mapVars :: (Expr -> Expr) -> Expr -> Expr

    express Data.Express

    O(n*m). Applies a function to all variables in an expression. Given that:

    > let primeify e = if isVar e
    |                  then case e of (Value n d) -> Value (n ++ "'") d
    |                  else e
    > let xx = var "x" (undefined :: Int)
    > let yy = var "y" (undefined :: Int)
    > let xx -+- yy = value "+" ((+) :: Int->Int->Int) :$ xx :$ yy
    
    Then:
    > xx -+- yy
    x + y :: Int
    
    > primeify xx
    x' :: Int
    
    > mapVars primeify $ xx -+- yy
    x' + y' :: Int
    
    > mapVars (primeify . primeify) $ xx -+- yy
    x'' + y'' :: Int
    
    Given that the argument function is O(m), this function is O(n*m).

  2. map' :: Expr -> Expr -> Expr

    express Data.Express.Fixtures

    map lifted over Exprs.

    > map' absE (unit one)
    map abs [1] :: [Int]
    

  3. mapE :: Expr

    express Data.Express.Fixtures

    map over the Int element type encoded as an Expr

    > mapE
    map :: (Int -> Int) -> [Int] -> [Int]
    

  4. mapConsts :: (Expr -> Expr) -> Expr -> Expr

    express Data.Express.Map

    O(n*m). Applies a function to all terminal constants in an expression. Given that:

    > let one   = val (1 :: Int)
    > let two   = val (2 :: Int)
    > let xx -+- yy = value "+" ((+) :: Int->Int->Int) :$ xx :$ yy
    > let intToZero e = if typ e == typ zero then zero else e
    
    Then:
    > one -+- (two -+- xx)
    1 + (2 + x) :: Int
    
    > mapConsts intToZero (one -+- (two -+- xx))
    0 + (0 + x) :: Integer
    
    Given that the argument function is O(m), this function is O(n*m).

  5. mapSubexprs :: (Expr -> Maybe Expr) -> Expr -> Expr

    express Data.Express.Map

    O(n*m). Substitute subexpressions of an expression using the given function. Outer expressions have more precedence than inner expressions. (cf. //) With:

    > let xx = var "x" (undefined :: Int)
    > let yy = var "y" (undefined :: Int)
    > let zz = var "z" (undefined :: Int)
    > let plus = value "+" ((+) :: Int->Int->Int)
    > let times = value "*" ((*) :: Int->Int->Int)
    > let xx -+- yy = plus :$ xx :$ yy
    > let xx -*- yy = times :$ xx :$ yy
    
    > let pluswap (o :$ xx :$ yy) | o == plus = Just $ o :$ yy :$ xx
    |     pluswap _                           = Nothing
    
    Then:
    > mapSubexprs pluswap $ (xx -*- yy) -+- (yy -*- zz)
    y * z + x * y :: Int
    
    > mapSubexprs pluswap $ (xx -+- yy) -*- (yy -+- zz)
    (y + x) * (z + y) :: Int
    
    Substitutions do not stack, in other words a replaced expression or its subexpressions are not further replaced:
    > mapSubexprs pluswap $ (xx -+- yy) -+- (yy -+- zz)
    (y + z) + (x + y) :: Int
    
    Given that the argument function is O(m), this function is O(n*m).

  6. mapValues :: (Expr -> Expr) -> Expr -> Expr

    express Data.Express.Map

    O(n*m). Applies a function to all terminal values in an expression. (cf. //-) Given that:

    > let zero  = val (0 :: Int)
    > let one   = val (1 :: Int)
    > let two   = val (2 :: Int)
    > let three = val (3 :: Int)
    > let xx -+- yy = value "+" ((+) :: Int->Int->Int) :$ xx :$ yy
    > let intToZero e = if typ e == typ zero then zero else e
    
    Then:
    > one -+- (two -+- three)
    1 + (2 + 3) :: Int
    
    > mapValues intToZero $ one -+- (two -+- three)
    0 + (0 + 0) :: Integer
    
    Given that the argument function is O(m), this function is O(n*m).

  7. mapVars :: (Expr -> Expr) -> Expr -> Expr

    express Data.Express.Map

    O(n*m). Applies a function to all variables in an expression. Given that:

    > let primeify e = if isVar e
    |                  then case e of (Value n d) -> Value (n ++ "'") d
    |                  else e
    > let xx = var "x" (undefined :: Int)
    > let yy = var "y" (undefined :: Int)
    > let xx -+- yy = value "+" ((+) :: Int->Int->Int) :$ xx :$ yy
    
    Then:
    > xx -+- yy
    x + y :: Int
    
    > primeify xx
    x' :: Int
    
    > mapVars primeify $ xx -+- yy
    x' + y' :: Int
    
    > mapVars (primeify . primeify) $ xx -+- yy
    x'' + y'' :: Int
    
    Given that the argument function is O(m), this function is O(n*m).

  8. mapMaybe :: (a -> Maybe b) -> [a] -> [b]

    foundation Foundation

    The mapMaybe function is a version of map which can throw out elements. In particular, the functional argument returns something of type Maybe b. If this is Nothing, no element is added on to the result list. If it is Just b, then b is included in the result list.

    Examples

    Using mapMaybe f x is a shortcut for catMaybes $ map f x in most cases:
    >>> import GHC.Internal.Text.Read ( readMaybe )
    
    >>> let readMaybeInt = readMaybe :: String -> Maybe Int
    
    >>> mapMaybe readMaybeInt ["1", "Foo", "3"]
    [1,3]
    
    >>> catMaybes $ map readMaybeInt ["1", "Foo", "3"]
    [1,3]
    
    If we map the Just constructor, the entire list should be returned:
    >>> mapMaybe Just [1,2,3]
    [1,2,3]
    

  9. mappend :: Monoid a => a -> a -> a

    foundation Foundation

    An associative operation NOTE: This method is redundant and has the default implementation mappend = (<>) since base-4.11.0.0. Should it be implemented manually, since mappend is a synonym for (<>), it is expected that the two functions are defined the same way. In a future GHC release mappend will be removed from Monoid.

  10. mapM :: (Mappable collection, Applicative m, Monad m) => (a -> m b) -> collection a -> m (collection b)

    foundation Foundation.Collection

    Map each element of the collection to an action, evaluate these actions from left to right, and collect the results. For a version that ignores the results see mapM_.

Page 231 of many | Previous | Next