pipeline.scm 409 B

12345678910111213141516
  1. (define-module (pipeline)
  2. #:use-module (rnrs base)
  3. #:export (->))
  4. (define-syntax ->
  5. (syntax-rules ()
  6. ;; first expression is left unchanged
  7. [(-> expr) expr]
  8. ;; take from the back, wrap other calls
  9. [(-> expr* ... (op args* ...))
  10. (op args* ... (-> expr* ...))]
  11. ;; make parens unnecessary in trivial case of no further arguments
  12. [(-> expr* ... op)
  13. (op (-> expr* ...))]))