Doing science on programming languages: meta-programming, streams, staging.