-1

so compose function curries multiple functions together suppose ((compose sin cos tan asin) 0) so expecting output to be as (sin (cos (tan (asin x))))

 (define (compose f . g)
    (lambda(x)
    (if(eq? (cdr g) '())
        (f ((car g) x))
    (f ((compose (car g)  (cdr g)) x))
    )
)
)
coredump
  • 37,664
  • 5
  • 43
  • 77
ganesh
  • 171
  • 1
  • 2
  • 13

1 Answers1

1
(define (compose f . rest)
    (if (null? rest)
        f
        (lambda (x) (f ((apply compose rest) x)))))

(define (foo x) (- x 30))
(define (bar x) (* x 20))
(define (baz x) (+ x 10))

((compose baz) 100)           ; 110
((compose bar baz) 100)       ; 2200
((compose foo bar baz) 100)   ; 2170
set0gut1
  • 1,652
  • 1
  • 8
  • 21