See http://www.cwi.nl/~ralf/HList for a paper which shows how to implement a heterogeneous list in haskell, and how to implement operations on it (amongst other things)... Keean.