rendered paste body; 4a
(define (my-compose f g)
(lambda (x) (f (g x)))
)
; 4b
(define (curry f)
(lambda (x) (lambda (y) (f x y)))
)
; 4c
(define (uncurry f)
(lambda (x y) ((f x) y))
)
; 4d
(define (eat-apples lst)
(filter (my-compose not ((curry symbol=?) 'apple)) lst)
)
(define (my-map f lst)
; The only one I couldn't figure out myself.
(foldr (uncurry (my-compose (curry cons) f)) empty lst)
)
(equal? ((my-compose add1 sqr) 2) 5)
(equal? (((curry cons) 3) empty) (cons 3 empty))
(equal? ((uncurry (curry cons)) 3 empty) (cons 3 empty))
(equal? (eat-apples empty) empty)
(equal? (eat-apples '(dsada apple dasgb qwewq czxa fa2 das apple apple aple)) '(dsada dasgb qwewq czxa fa2 das aple))
(equal? '(1 4 9 16) (my-map sqr '(1 2 3 4)))
(equal? empty (my-map add1 empty))
(equal? '(3 6 9 12 15) (my-map (lambda (x) (* 3 x)) '(1 2 3 4 5)))