KpJz SafeIY Left-associative  operator. Read as "apply forward" or "pipe into". Use this to create long chains of computation that suggest which direction things move in.3 |> succ |> recip |> negate-0.25"Or use it anywhere you would use ().\ x -> (x |> f) == f x\ x -> (x |> f |> g) == g (f x)Right-associative  operator. Read as "apply backward" or "pipe from". Use this to create long chains of computation that suggest which direction things move in. You may prefer this operator over () for / actions since it puts the last function first.%print <| negate <| recip <| succ <| 3-0.25"Or use it anywhere you would use (). Note that () and (=) have the same precedence, so they cannot be used together.-- This doesn't work!(-- print <| 3 |> succ |> recip |> negate\ x -> (f <| x) == f x\ x -> (g <| f <| x) == g (f x)Function application. This function usually isn't necessary, but it can be more readable than some alternatives when used with higher-order functions like .#map (apply 2) [succ, recip, negate][3.0,0.5,-2.0]JIn general you should prefer using an explicit lambda or operator section.)map (\ f -> 2 |> f) [succ, recip, negate][3.0,0.5,-2.0] map (2 |>) [succ, recip, negate][3.0,0.5,-2.0] map (<| 2) [succ, recip, negate][3.0,0.5,-2.0]\ x -> apply x f == f xLeft-associative  operator. Read as "compose forward" or "and then". Use this to create long chains of computation that suggest which direction things move in.let f = succ .> recip .> negatef 3-0.25"Or use it anywhere you would use ().\ x -> (f .> g) x == g (f x)%\ x -> (f .> g .> h) x == h (g (f x))Right-associative  operator. Read as "compose backward" or "but first". Use this to create long chains of computation that suggest which direction things move in. You may prefer this operator over () for / actions since it puts the last function first.(let f = print <. negate <. recip <. succf 3-0.25"Or use it anywhere you would use ( ). Note that () and (=) have the same precedence, so they cannot be used together.-- This doesn't work!#-- print <. succ .> recip .> negate\ x -> (g <. f) x == g (f x)%\ x -> (h <. g <. f) x == h (g (f x))Function composition. This function usually isn't necessary, but it can be more readable than some alternatives when used with higher-order functions like .+let fs = map (compose succ) [recip, negate]map (apply 3) fs [0.25,-4.0]JIn general you should prefer using an explicit lambda or operator section.9map (\ f -> f 3) (map (\ f -> succ .> f) [recip, negate]) [0.25,-4.0]0map (\ f -> f 3) (map (succ .>) [recip, negate]) [0.25,-4.0]0map (\ f -> f 3) (map (<. succ) [recip, negate]) [0.25,-4.0]\ x -> compose f g x == g (f x)Left-associative  operator. Read as "strict apply forward" or "strict pipe info". Use this to create long chains of computation that suggest which direction things move in.3 !> succ !> recip !> negate-0.25!The difference between this and (I) is that this evaluates its argument before passing it to the function.undefined |> const TrueTrueundefined !> const True *** Exception: Prelude.undefined...\ x -> (x !> f) == seq x (f x):\ x -> (x !> f !> g) == let y = seq x (f x) in seq y (g y)Right-associative  operator. Read as "strict apply backward" or "strict pipe from". Use this to create long chains of computation that suggest which direction things move in. You may prefer this operator over () for / actions since it puts the last function first.%print <! negate <! recip <! succ <! 3-0.25!The difference between this and (I) is that this evaluates its argument before passing it to the function.const True <| undefinedTrueconst True <! undefined *** Exception: Prelude.undefined... Note that () and (=) have the same precedence, so they cannot be used together.-- This doesn't work!(-- print <! 3 !> succ !> recip !> negate\ x -> (f <! x) == seq x (f x):\ x -> (g <! f <! x) == let y = seq x (f x) in seq y (g y)Strict function application. This function usually isn't necessary, but it can be more readable than some alternatives when used with higher-order functions like .$map (apply' 2) [succ, recip, negate][3.0,0.5,-2.0]The different between this and H is that this evaluates its argument before passing it to the function.apply undefined (const True)Trueapply' undefined (const True) *** Exception: Prelude.undefined...JIn general you should prefer using an explicit lambda or operator section.)map (\ f -> 2 !> f) [succ, recip, negate][3.0,0.5,-2.0] map (2 !>) [succ, recip, negate][3.0,0.5,-2.0] map (<! 2) [succ, recip, negate][3.0,0.5,-2.0] \ x -> apply' x f == seq x (f x)  009 9 00 SafeJS            "flow-1.0.12-CEWd4WCwrfB6qLalT2RgtUFlowPrelude&IO$mapControl.Category>>>. Paths_flow|><|apply.><.compose!>