Subject: Re: conservative gc sucks From: Erik Naggum <erik@naggum.no> Date: 10 Jan 2003 11:58:02 +0000 Newsgroups: comp.lang.lisp Message-ID: <3251188682174136@naggum.no> * lord@emf.emf.net (Tom Lord) | Ok, but, so what? The topic is closing _files_, not streams. Files | may be randomly accessible. Reaching the end-of-file during a read | is not a condition under which to automatically close the file. I thought you said this was obvious, but it appears that you were not entirely truthful. If you want freedom from closing/freeing a /stream/, the obvious solution is to close it when it has been exhausted. This is neatly localizable and abstractable. If you want to refer to /files/, the obvious solution is to intern pathnames and use a mechanism that keeps a maximum number of files open which is used to close the least recently referenced file if you are maxed out, so you save on the open calls. If you close a file, you can keep its file-position with this structure for use if you need to open it again. In this scheme, you never really talk to any streams -- they are hidden by the abstraction, and hence open and close are localized operations. Your argument was that certain algorithms were not implementable in Common Lisp because the language did not require the closing of operating-system files when the system garbage-collected streams. This is in fact wrong. There are far more possibilities that you have been willing to explore before you reached your conclusion. -- Erik Naggum, Oslo, Norway Act from reason, and failure makes you rethink and study harder. Act from faith, and failure makes you blame someone and push harder.