int ?=?( int *, int ); int ?*?( int, int ); forall( type T | { T ?*?( T, T ); } ) T square( T t ) { return t * t; } forall( type U | { U square( U ); } ) U quad( U u ) { return square( square( u ) ); } void f() { quad( 7 ); } // Local Variables: // // tab-width: 4 // // End: //