I found defining the following
(%) = flip fmap
I can write code like this:
readFile \"/etc/passwd\" % lines % filter (not
Your operator (%)
is exactly the operator (<&>) from the lens package.
It can be imported with:
import Control.Lens.Operators ((<&>))
There is a similar function for the Applicative
type class called <**>; it's a perfectly reasonable thing to want or use for Functor as well. Unfortunately, the semantics are a bit different for <**>
, so it can't be directly widened to apply to Functor
as well.
(<&>) :: Functor f => f a -> (a -> b) -> f b
Now available from Data.Functor
in base
.
https://hackage.haskell.org/package/base-4.12.0.0/docs/Data-Functor.html#v:-60--38--62-
-- (.) is to (<$>) as flip (.) is to your (%).
I usually define (&) = flip (.) and it's just like your example, you can apply function composition backwords. Allows for easier to understand points-free code in my opinion.
Personally I wouldn't use such an operators because then I have to learn two orders in which to read programs.