
Might have not been clear, but i will try illustrate . f:: a-> b -> c -> (b,(c,a)) f1 :: c -> a -> d input type: A B C ---------- | f | | _____ | output (B,(C,A)) C A ---------- | f1 | | _____ | output D If i want compose f and f1, i need to do a correct input to f1 from the output of f. So i want one function to convert the output of "f" to input off "f!". In this case, we do f1 fst (snd (t,(t1,t2))) snd (snd (t,(t1,t2))) But i want do this automaticaly, for type of any two function. I search for the "glue". I don't have any concern about what the function does, i only have interess on input and output types. Cheers, André No dia 9 de Outubro de 2010 22:38, André Batista Martins < andre_bm@netcabo.pt> escreveu:
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.