Domain-Specific Languages for Ad Hoc Data Processing