Multi-Stage Programming with Splice Variables