~ chicken-r7rs (master) bcac12d62686b967eeb3f4889d77fc51ba7efc96
commit bcac12d62686b967eeb3f4889d77fc51ba7efc96 Author: Evan Hanson <evhan@foldling.org> AuthorDate: Thu May 30 09:23:59 2013 +0000 Commit: Evan Hanson <evhan@foldling.org> CommitDate: Thu May 30 09:23:59 2013 +0000 call-with-port, close-port & eof-object diff --git a/r7rs.scm b/r7rs.scm index ae86f7b..619c2aa 100644 --- a/r7rs.scm +++ b/r7rs.scm @@ -12,6 +12,10 @@ error-object-irritants read-error? file-error? + ;; Input & output + call-with-port + close-port + eof-object ;; System interface command-line exit @@ -161,6 +165,23 @@ (and (exn? obj) (file? obj)))))) +;;; +;;; 6.13. Input and Output +;;; + +(define (call-with-port port proc) + (dynamic-wind void (lambda () (proc port)) (lambda () (close-port port)))) + +(define (close-port port) + (cond ((input-port? port) + (close-input-port port)) + ((output-port? port) + (close-output-port port)) + (else + (error 'close-port "not a port" port)))) + +(define (eof-object) #!eof) + ;;; ;;; 6.14. System interface. ;;;Trap