Hello,
 exists any algorithm  to determine how terms can be changed to safisty the type of one function?


example:

f:: a-> b -> c -> (b,c,a)

f1 ::  c -> a -> d

In my first function "f" i want assign  the output "c" and "a" for to input of function "f1".
I searched for any solution, but i didn't find any anything.

One clue i have found is "minimal edit distance algorithm" for 2 strings. Perhaps if i convert de output type of "f" to one string, and de input of "f1" to another string and then use this algorithm , i will get one "dirty" solution...

I'm open to any sugestion.