I'll back this change out. I don't feel particularly attached to it.

However I'm certain that
  (let ((x :foo)) (unintern x))
 "X3J13 voted in January 1989 <36> to clarify that it is an error to destructively modify any object that appears as a constant in executable code, whether within a /quote/ special form or as a self-evaluating form"

Changing the 'symbol-package' to nil would be forbidden.

On Tue, Jun 24, 2014 at 7:17 AM, Stas Boukarev <stassats@gmail.com> wrote:
Nikodemus Siivola <nikodemus@random-state.net> writes:

> On 24 June 2014 07:56, Stas Boukarev <stassats@gmail.com> wrote:
>> I don't think that it's totally different, before,
>> (let ((x (intern "x" :keyword))) (unintern x :keyword) (keywordp x))
>> returned NIL, now it returns T.
> I'm trying to decide if I think this is somehow different from
>   (let ((x :foo)) (unintern x) (keywordp x)) => T
It should be (unintern x :keyword), then it's NIL, since KEYWORDP isn't
With best regards, Stas.

Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
Sbcl-devel mailing list