Hi, 

I would to create a list of tuples (or something similar) of invertible functions

[((a -> b), (b -> a)), ((b -> c), (c -> b)), ....

Such that I could call

forward invertibleFuctionList domainValue = ? -- composite all the functions
backward invertibleFuctionList rangeValue = 
    forward (reverse invertibleFuctionList) rangeValue  -- or something similar


I would also like to concat them. This sounds like a job for GADT that someone might have already tackled. Any ideas?

-Jonathan