История изменений
Исправление monk, (текущая версия) :
(define (comp f g)
(λ (x) (f (g x))))
Это неправильный compose. Правильный выглядит так:
(define (compose f . fs)
(cond
[(null? fs) f]
[else
(define rest-f (apply compose fs))
(lambda (x) (f (rest-f x)))]))
ну и надо (in-range iter)
Исправил. Теперь:
cpu time: 84 real time: 84 gc time: 0
cpu time: 500 real time: 496 gc time: 0
P.S. Хотя в С++ я тоже проверял с comp2(f,g)(x) = f(g(x)), compose(f,g,h) = f(comp2(g,h))(x)
Исходная версия monk, :
(define (comp f g)
(λ (x) (f (g x))))
Это неправильный compose. Правильный выглядит так:
(define (compose f . fs)
(cond
[(null? fs) f]
[else
(define rest-f (apply compose fs))
(lambda (x) (f (rest-f x)))]))
ну и надо (in-range iter)
Исправил. Теперь:
cpu time: 84 real time: 84 gc time: 0
cpu time: 500 real time: 496 gc time: 0