(use magic-pipes) (use args) (use ports) (use chicken-syntax) (receive (options operands before-exprs after-exprs usage) (parse-mp-args (command-line-arguments) '() "procedure-expr..." "Read s-expressions from standard input, and applies the procedure-expr to them.") (unless (>= (length operands) 1) (usage)) (let* ((exprs (map parse-code operands)) (ec (make-eval-context before-exprs exprs after-exprs)) (closures (list-tabulate (length operands) (lambda (N) (eval-context-handler-closure ec N))))) (for-each-input-datum (lambda (input) (for-each (lambda (closure) (without-input-port (lambda () (closure input)))) closures))) (without-input-port (eval-context-end-closure ec))))