fork download
  1. (define (fold c z xs)
  2. (cond ((null? xs) z)
  3. (else (fold c (c (car xs) z) (cdr xs)))))
  4.  
  5. (define (comp f g) (lambda (x)
  6. (f (g x))))
  7.  
  8. (define (cons1 x) (lambda (y)
  9. (cons x y)))
  10.  
  11. (define (filter p xs)
  12. ((fold (lambda (x k)
  13. (if (p x) (comp k (cons1 x)) k))
  14. (lambda (x) x)
  15. xs)
  16. '()))
  17.  
  18. (display (filter (lambda(x)(= (remainder x 2) 0)) (list 1 2 3 4 5)))
  19. #|
  20. (define (foldd c z xs)
  21.   (cond ((null? xs) (z '()))
  22.   (else (foldd c (c (car xs) z) (cdr xs)))))
  23.  
  24. (define (comp f g) (lambda (x) ; ((comp f g) x)
  25.   (f (g x))))
  26.  
  27. (define (cons1 x) (lambda (y) ; ((cons1 x) y)
  28.   (cons x y)))
  29.  
  30. (define (filter p xs)
  31.   (foldd (lambda (x k)
  32.   (if (p x) (comp k (cons1 x)) k))
  33.   (lambda (x) x)
  34.   xs))
  35.  
  36. (display (filter (lambda(x)(= (remainder x 2) 0)) (list 1 2 3 4 5)))
  37. |#
Success #stdin #stdout 0.03s 8616KB
stdin
Standard input is empty
stdout
(2 4)