My colleague Kirill mentioned a post he had about named parameters, but I thought I would pull it up out of the comments, because I think it's pretty interesting.  It's similar to a system I've been using to simplify writing data classes that I'll get up here one of these days.