a and c can be anything: function, algebraic type, ...

That's the thing. Prod a [c] leaves plenty of room.