Yes, this would work, thanks. But let me extent my question: what if all the types would be in a class FakeClass which has function specialID :: a -> ID and I would like to do > foo $ map specialID [a,b,c,d] ?