(function "square" (x: float) ( *f x x)) (function "integr" (f: addr low: float high: float n: int) (let (h (/f (-f high low) (floatofint n)) x low s 0.0 i n) (while (> i 0) (assign s (+f s (app f x float))) (assign x (+f x h)) (assign i (- i 1))) ( *f s h))) (function "test" (n: int) (app "integr" ["square" 0.0 1.0 n] float))