1

I'm wondering whether there is a systematic/generic way to find an inverse function in Haskell.

Assuming that the function is bijective. Like:

map (+1) . map (\x -> x-1) == id
transpose . transpose == id

(It is interesting that funs like transpose and reverse are inverse themselves.) We can manually find the inverse of these functions.

While functions are not bijective cannot:

f = (*0)
sum

I also find that functions with two params may or may not be bijections. For map, like map (+1) is bijective while map (*0) is not.

The composition of two bijective functions are also bijective (when considering only one param):

g = transpose . map (map (+1))
h = map (map (\x->x-1)). transpose 
g . h == id

(For h = f . g, if we can find f' and g', then we can find h' = g' . f')

So if we restrict to a bijective function f :: a -> b , is there a systematic way to find the inverse f' :: b -> a or inverse functions of some compositions of bijective functions?

Meowcolm Law
  • 392
  • 4
  • 13

0 Answers0