The Ampersand compiler and prototype generator