Description

Helper functions for functors.

These operators are designed to make the interoperation between monadic and pure computations more convenient by allowed them to be chained together without peppering the program with superflouos return statements.

Each function is a pure analogue of a monadic one. The correspondences are as follows: ``` >\$> ~ >>= \$> ~ >> <\$ ~ << (re-exported from Data.Functor) ~ =<< (same as Data.Functor.<\$, but with the precedence of >>=) >=\$> ~ >=> <\$=< ~ <=< ```

Lastly, `|>` is left-to-right function composition (flipped version of `\$`).

Synopsis

# Documentation

(>\$>) :: Functor f => f a -> (a -> b) -> f b infixl 1 Source

Flipped `fmap` for chaining plain functions after a functor in the following way:

```readFile '1.txt' >\$> lines >\$> map length >>= print
```

`lines` and `map length` are non-monadic functions, but peppering them with returns, as pure `>>=` necessitates, is quite tedious.

In general:

```m >>= return . f   is the same as   m >\$> f
```

(\$>) :: Functor f => f b -> a -> f a infixl 1 Source

Left-associatiative, flipped `\$>`. Corresponds to `>>`

(<\$<) :: Functor f => (a -> b) -> f a -> f b infixr 1 Source

Right-associative infix synonym for `fmap`.

(>=\$>) :: Functor f => (a -> f b) -> (b -> c) -> a -> f c infixl 1 Source

Application of `>\$>` to Kleisli composition `>=>` Use is analogous to that of `>\$>`, e.g.

``` f :: FilePath -> IO ()
f = (readFile >=\$> lines >=\$> map length >=> print)
```

In general:

``` m >=\$> f   is the same as   m >=> return . f
```

(<\$=<) :: Functor f => (b -> c) -> (a -> f b) -> a -> f c infixr 1 Source

Flipped version of `>=\$>`.

(|>) :: a -> (a -> b) -> b infixl 1 Source

Flipped version of `\$`.