It turns out that this combinator
is a powerful thing. It was abstracted from following (commonly used)
pattern f . h . g where f and g are fixed.
This library not only defines ~@~ combinator, but also some derived
combinators that can help us easily define a lot of things including
lenses. See lens package for
detais on what lenses are.
Function Data.Function.on can be implemented using ~@~ as:
If function on3 existed in base then it could be defined as:
Other usage examples and documentation can be found in
Data.Function.Between module.