[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Initial /" macro setting in XLisp in question



Although it may be useful for certain applications to have strings in Maclisp,
I don't think they should be the default. XLisp seems to have a different
default for /" than previous lisps have had. The following reasons come to
mind:

[1] Practical constraints.
    The STRING package is large. Many simple stringlike applications don't
    require that much hair. (ERROR "...") or (PRINC "...") are some of the
    more common cases. Picking apart strings is not the only reason for having
    them.

[2] Philosophical constraints.
    Things which are the default should be assumed to be available by default
    in a Lisp. Take an analagous situation:

    It didn't used to be that LET existed. When it was introduced, people 
    assumed they could use it whereever they wanted. This was fine because
    it was generally agreed what functionality it needed. Now if anyone has
    a package, FOO, which uses LET and someone tries to use the FOO package
    who has redefined LET, then we say it is not the FOO-package maintainer's
    fault that his code doesn't run in this person's environ because a system
    function has been redefined.

    If then, making real strings the default means that people will start
    to write code for Maclisp which depends on having strings, then I don't
    want it to be the default. It's fine for NIL and it's fine for LispM and
    even fine for Multics lisp because these have the address space to spare,
    but it's not fine for Maclisp because it doesn't. If I am running short
    of space in my Maclisp and I still need the support of some random package
    and it's going to in turn want STRINGs loaded.

[3] Serving a user community.
    I think the default should serve the user community in the most useful
    way. It's easy to make real strings be your default if you want -- it's 
    harder to undo the default (because shared packages will depend on the
    most powerful feature defaultly available). I have just gone through and
    deleted the (SSTATUS MACRO /" '+INTERNAL-/"-MACRO) all over my packages
    because I thought that was going to be the default. I don't now want to
    have to go through and re-enable them.

    I think the argument is actually most akin to the Lisp Machine people's
    argument about destructuring LET. People recognize the usefulness of
    destructuring let, but they don't want it the default because their
    applications don't happen to call for it. This means I have to load it
    when I need it, but I don't really mind that. I'd rather have to do that
    than have people have to be turning it off if they didn't want it.

I know ALAN, GSB, and PSZ at least support me in not wanting real strings to 
be the default for Maclisp. We need to consider this carefully before 
attempting to release XLisp.

-kmp