Как составить список функций в схеме? - PullRequest
0 голосов
/ 18 мая 2018

так что составьте функцию карри нескольких функций вместе предположим ((compose sin cos tan asin) 0), поэтому ожидаемый результат будет как (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))
    )
)
)

1 Ответ

0 голосов
/ 18 мая 2018
(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
...