# Module Data.Function.Inversion

This module provides some utility functions for inverting functions.

Author: Michael Hanus

Version: November 2020

## Summary of exported operations:

 ```invf1 :: (Data a, Data b) => (a -> b) -> b -> a```    Inverts a unary function. ```invf2 :: (Data a, Data b, Data c) => (a -> b -> c) -> c -> (a,b)```    Inverts a binary function. ```invf3 :: (Data a, Data b, Data c, Data d) => (a -> b -> c -> d) -> d -> (a,b,c)```    Inverts a ternary function. ```invf4 :: (Data a, Data b, Data c, Data d, Data e) => (a -> b -> c -> d -> e) -> e -> (a,b,c,d)```    Inverts a function of arity 4. ```invf5 :: (Data a, Data b, Data c, Data d, Data e, Data f) => (a -> b -> c -> d -> e -> f) -> f -> (a,b,c,d,e)```    Inverts a function of arity 5.

## Exported operations:

 ```invf1 :: (Data a, Data b) => (a -> b) -> b -> a```    Inverts a unary function.
 ```invf2 :: (Data a, Data b, Data c) => (a -> b -> c) -> c -> (a,b)```    Inverts a binary function.
 ```invf3 :: (Data a, Data b, Data c, Data d) => (a -> b -> c -> d) -> d -> (a,b,c)```    Inverts a ternary function.
 ```invf4 :: (Data a, Data b, Data c, Data d, Data e) => (a -> b -> c -> d -> e) -> e -> (a,b,c,d)```    Inverts a function of arity 4.
 ```invf5 :: (Data a, Data b, Data c, Data d, Data e, Data f) => (a -> b -> c -> d -> e -> f) -> f -> (a,b,c,d,e)```    Inverts a function of arity 5.