LINUX.ORG.RU

История изменений

Исправление 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