Hoogle Search

Within LTS Haskell 24.27 (ghc-9.10.3)

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

  1. (.$) :: Monad m => m (m a) -> m a

    composition-prelude Control.Composition

    Infix version of join As an example, one could use this to rewrite

    between (char '"') (char '"')
    
    to
    between .$ (char '"')
    
    Or
    fromEither :: Either a a -> a
    fromEither = either id id
    
    to
    fromEither :: Either a a -> a
    fromEither = either .$ id
    

  2. join :: Monad m => m (m a) -> m a

    verset Verset

    The join function is the conventional monad join operator. It is used to remove one level of monadic structure, projecting its bound argument into the outer level. 'join bss' can be understood as the do expression

    do bs <- bss
    bs
    

    Examples

    >>> join [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    [1,2,3,4,5,6,7,8,9]
    
    >>> join (Just (Just 3))
    Just 3
    
    A common use of join is to run an IO computation returned from an STM transaction, since STM transactions can't perform IO directly. Recall that
    atomically :: STM a -> IO a
    
    is used to run STM transactions atomically. So, by specializing the types of atomically and join to
    atomically :: STM (IO b) -> IO (IO b)
    join       :: IO (IO b)  -> IO b
    
    we can compose them as
    join . atomically :: STM (IO b) -> IO b
    
    to run an STM transaction and the IO action it returns.

Page 3 of many | Previous | Next