Matthias Felleisen <matthias-1vnkwvzi4qavc3sceru...@public.gmane.org> writes:
> CODE: > > #lang racket > > (define-syntax U > (syntax-rules () > [(_ f) (f f)])) > > (define-syntax define/comb > (syntax-rules () > [(_ comb name (arg1 arg2) body) > (define name > (comb (λ (name) (λ (arg1 arg2) body))))])) > > (define (Z f) > (U (λ (g) (λ (x y) ((f (U g)) x y))))) > > (define/comb Z comb-sum (l t) > (if (empty? l) t (comb-sum (rest l) (+ t (first l))))) > > (define (sum l t) > (if (empty? l) t (sum (rest l) (+ t (first l))))) > > (collect-garbage)(collect-garbage) > (time (comb-sum (make-list 10000000 1) 0)) > > (collect-garbage)(collect-garbage) > (time (sum (make-list 10000000 1) 0)) Why are the `collect-garbage' calls doubled? Štěpán _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users