All pastes #907970 Raw Edit

Someone

public text v1 · immutable
·published 2008-02-18 01:09 UTC
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)))