Safe Haskell | Safe-Inferred |
---|

Module with basic infrastructure for function inheritance based on open rercusion.

See the work of William Cook.

We use the following terminology.

- A
*closed*function is an ordinary function. - A
*mixin*function is an open function that can be inherited from, or that extends another open function.

We obtain a closed function from a base mixin `base`

and a number of mixin extensions `e1`

,...,`en`

as follows:

mixin (en <@> ... <@> e1 <@> base)

# Documentation

Mixin identity function.

Identity for mixin composition:

mixinId <@> f == f f <@> mixinId == f