On Thu, Mar 11, 2010 at 2:13 PM, Mark Evenson evenson@panix.com wrote:
On Mar 11, 2010, at 12:08 PM, Alessio Stalla wrote:
[…]
I don't know how hard it is, but at this point what do you think about having an abstract base class/interface (say, Resource) which only has a name property and from which you can extract an input stream, and have this class be extended by Pathname, JarURLResource, GenericURLResource, whatever? Some operations on pathnames really do only make sense for file pathnames, not arbitrary URLs.
I'm definitely not wedded to cramming everything into Lisp pathname, so would welcome the exploration of other implementation options here. The jar Pathname work took a lot more effort than I originally thought, so I want to do as much exploring of reworking things without coding.
So, I take it you propose a Java-side abstraction here for Resource. How would this work for the Lisp user who wants to specify an option to LOAD? Would we create CLOS abstractions for LOAD that specialize on the type?
Well LOAD is not a problem per se, as it basically only needs to obtain a stream from the resource, and that could be implemented in Java for the various Resource subclasses via a getStream method. What is more problematic, or at least requires some thought, is how to represent resources in Lisp, and if and how to allow the user to create and manipulate them from Lisp. You have surely more insight into the problem than I have; I proposed this abstraction because it seems useful and clean design to me, but I don't have very precise knowledge of the issue.
Alessio