between: Function combinator "between" and derived combinators

[ bsd3, data, library ] [ Propose Tags ]

It turns out that this combinator

f ~@~ g = (f .) . (. g)

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 define ~@~ combinator, but also some derived combinators that can help us to 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:

on :: (b -> b -> c) -> (a -> b) -> a -> a -> c
on f g = (id ~@~ g ~@~ g) f

If function on3 existed in base then it could be defined as:

on3 :: (b -> b -> b -> d) -> (a -> b) -> a -> a -> a -> d
on3 f g = (id ~@~ g ~@~ g ~@~ g) f

Other usage examples and documentation can be found in Data.Function.Between.


[Skip to Readme]

Modules

[Index]

Flags

Automatic Flags
NameDescriptionDefault
pedantic

Pass additional warning flags including -Werror to GHC during compilation.

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.9.0.0, 0.9.0.1, 0.9.0.2, 0.10.0.0, 0.11.0.0
Change log ChangeLog.md
Dependencies base (>3 && <5) [details]
License BSD-3-Clause
Copyright (c) 2013, 2014 Peter Trško
Author Peter Trško
Maintainer peter.trsko@gmail.com
Category Data
Home page https://github.com/trskop/between
Bug tracker https://github.com/trskop/between/issues
Source repo head: git clone git://github.com/trskop/between.git
this: git clone git://github.com/trskop/between.git(tag v0.9.0.2)
Uploaded by PeterTrsko at 2014-08-30T09:38:05Z
Distributions LTSHaskell:0.11.0.0, NixOS:0.11.0.0, Stackage:0.11.0.0
Reverse Dependencies 3 direct, 0 indirect [details]
Downloads 5150 total (29 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Successful builds reported [all 1 reports]

Readme for between-0.9.0.2

[back to package description]

Between

Hackage

Description

It turns out that this combinator

f ~@~ g = (f .) . (. g)

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 define ~@~ combinator, but also some derived combinators that can help us to 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:

on :: (b -> b -> c) -> (a -> b) -> a -> a -> c
on f g = (id ~@~ g ~@~ g) f

If function @on3@ existed in /base/ then it could be defined as:

on3 :: (b -> b -> b -> d) -> (a -> b) -> a -> a -> a -> d
on3 f g = (id ~@~ g ~@~ g ~@~ g) f

For more examples see documentation.

Documentation

Stable releases with API documentation are available on Hackage.

Contributions

Contributions, pull requests and bug reports are welcome! Please don't be afraid to contact author using GitHub or by e-mail (see .cabal file for that).