function-combinators.scm 446 B

1234567891011121314151617181920212223
  1. (library (function-combinators)
  2. (export combine)
  3. (import
  4. (except (rnrs base) let-values map)
  5. (only (guile)
  6. lambda* λ))
  7. (define combine-binary-op
  8. (λ (proc1 proc2)
  9. (λ (in)
  10. (proc2
  11. (proc1 in)))))
  12. (define combine
  13. (λ (proc . other-procs)
  14. (cond
  15. [(null? other-procs) proc]
  16. [else
  17. (combine-binary-op proc
  18. (apply combine other-procs))]))))