%myty = type int %myfn = type float (int,double,uint,short) type int(%myfn) type int(int) type int(int(int)) %thisfuncty = type int (int) * implementation declare void %F(%thisfuncty, %thisfuncty, %thisfuncty) ; This function always returns zero int %zarro(int %Func) begin Startup: add int 0, 10 ret int 0 end int %test(int) begin call void %F(%thisfuncty %zarro, %thisfuncty %test, %thisfuncty %foozball) ret int 0 end int %foozball(int) begin ret int 0 end