On Wed, May 18, 2016 at 7:57 AM, Alessio Stalla <alessiosta...@gmail.com> wrote:
> Can you elaborate on that? > Not really yet. I haven't though enough about it at this point, the idea is still too fresh. But I will at least mention my main source of inspiration on the subject, coming from my Smalltalk days (of somewhat fading memory): the ENVY/Developer system. > > The stance on packages found in the mentioned Quora post is based on the > old misconception about packages being modules, or "software packages" in > the Linux distribution sense. They're not. They are really just namespaces, > containers of symbols. So it does not make any sense, to me, that they have > versions. Software has versions, not names. > > Well, "packages" seem to me to be the only system structuring device offered by the CL spec. So you have to work from there toward something more appropriate, I'd say. In a somewhat upward compatible manner I'd hope. > I think it *is* already possible, even if no convenient machinery for it > exists, to load the same symbols under different packages (i.e. to use > different names for different versions of the same concepts). > > (defpackage p ...) > (load (compile-file "p-1.0.lisp")) > (rename-package "P" "P-1.0") > (defpackage p ...) > (load (compile-file "p-1.1.lisp")) > (rename-package "P" "P" "P-1.1") > > p-*.lisp start with (in-package :p) > > Then you can compile code against p (latest version), p-1.0 and/or p-1.1. > Of course each p-*.lisp must be "nice" - only define things in package p. > > This is an interesting line of argument you've got here... Thanks,