| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell98 |
Flow
Description
Flow provides functions and operators for writing more understandable Haskell.
Flow does not export anything that conflicts with the Prelude. The recommended way to use Flow is to import it unqualified.
>>>import Flow
Function application
apply :: a -> (a -> b) -> b Source
apply x f == f x
Function application.
This is like the $ operator.
>>>apply False notTrue
Using this function with many arguments is cumbersome. Use |> or <|
instead.
>>>False `apply` not `apply` fromEnum1
This function usually isn't necessary since is the same as
apply x ff x. However it can come in handy when working with higher-order
functions.
>>>map (apply False) [not, id][True,False]
(|>) :: a -> (a -> b) -> b infixl 0 Source
(x |> f) == f x
Left-associative apply operator. This is like a flipped version of the
$ operator. Read it as "apply forward" or "pipe into".
>>>False |> notTrue
Since this operator has such low precedence, it can be used to remove parentheses from complicated expressions.
>>>False |> not |> fromEnum1
This operator can be used with higher-order functions, but apply might be
clearer.
>>>map (False |>) [not, id][True,False]
(<|) :: (a -> b) -> a -> b infixr 0 Source
(f <| x) == f x
Right-associative apply operator. This is like the $ operator.
Read it as "apply backward" or "pipe from".
>>>not <| FalseTrue
This operator can be used to remove parentheses from complicated expressions because of its low precedence.
>>>fromEnum <| not <| False1
With higher-order functions, this operator is a clearer alternative to
flip .apply
>>>map (<| False) [not, id][True,False]
Function composition
compose :: (a -> b) -> (b -> c) -> a -> c Source
compose f g x == g (f x)
Function composition.
This is like the . operator.
>>>(compose not fromEnum) False1
Composing many functions together quickly becomes unwieldy. Use .> or
<. instead.
>>>(not `compose` fromEnum `compose` succ) False2
Strict function application
apply' :: a -> (a -> b) -> b Source
apply' x f == seq x (f x)
Strict function application. This is like the $! operator.
>>>apply' undefined (const False)*** Exception: Prelude.undefined