On Sat, Dec 17, 2005 at 06:42:55PM -0500, Erik Enge wrote:
> On 12/17/05, Tolstoy <[EMAIL PROTECTED]> wrote:
> > What I'd like to see is some sort of Lisp Standard Library (lsl?)
> > containing a full suite of packages most of us use in most of our
> > jobs (whether writing in common lisp or not).
> 
> I've been thinking alot about this over the last few years, I think
> it's a good idea.

AOL!

> > What do you all think?
> 
> Instead of releasing, versioning and otherwise maintaining any
> actual code I think it would be great if the "standard library"
> (unfortunate name, perhaps) could be a set of (specific versions of)
> libraries which are known to work together.  If there are any
> problems, patches should migrate upstream so there's no real code
> maintenance of the libraries.  This set could be expressed as an
> ASDF system which depended on all the libraries; the net result of
> which would be that asdf-install and (require 'standard-lib) would
> all work just they way you would expect them but still we are not
> maintaining any actual code.
> 
> Using the abovementioned approach does however mean that all these
> systems' code would be loaded into your image whether you used them
> or not.  
<snip>
> I personally would be happy to simply download the "standard
> library" and have my code depend on individual packages (ie no
> secondary mechanism would be necessary) but others might not agree.

Well, I agree.  Perl and Python both get along quite nicely on this
model (and Lisp used to (does?) too; cf. REQUIRE).

I've thought for a while that I'd like a "personal Common Lisp", which
had all the libraries I could ever want (but not necessarily all at
once :), and where I could do some of the things that you can't do in
the COMMON-LISP package, like redefine COND or DO if I wanted to.

I know, of course, that I can in fact do that, by creating my own
package, but I think the Gardeners should consider this approach.
Someone else mentioned "Community Lisp" as a good name for such a
beast.

I envision something along the lines of

  (defpackage #:community-lisp
    (:use)
    ...)
  (in-package #:community-lisp

  ; portably solve the problem of "How can you find the text of a
  ; function?"
  (redefine-keyword defun (name args &body body)
    `(progn
        (setf (gethash ',name *function-definitions*) ,body)
        (cl:defun ,args @,body)))

  ; Portably solve the problem of serializable closures
  (redefine-keyword function (args &body body)
    `(progn
        (let ((closure (cl:function ,args @,body)))
          (record-closure closure args body)
          closure)))
  #|
    Do readtable magic here to make #' use COMMUNITY-LISP:FUNCTION
    instead of CL:FUNCTION
  |#

That sort of thing.

-- Larry

_______________________________________________
Gardeners mailing list
[email protected]
http://www.lispniks.com/mailman/listinfo/gardeners

Reply via email to