don't unconditionally unparse CHARACTER-SET types into MEMBER types
authorNikodemus Siivola <nikodemus@sb-studio.net>
Fri, 4 May 2012 09:43:40 +0000 (12:43 +0300)
committerNikodemus Siivola <nikodemus@sb-studio.net>
Fri, 4 May 2012 10:58:32 +0000 (13:58 +0300)
commit33564311979de0cb8798884c377e491cfb416b95
treebd98f8c81f550e08e7381644a558d2a45ae6d706
parent8a33054f6541596c61b091e2b77118deda1511e2
don't unconditionally unparse CHARACTER-SET types into MEMBER types

  Doing so means dumping a list containing most of unicode for each
  function that return something like

    (code-char (+ <const> <(integer 0)>))

  which has a derived type (CHARACTER-SET ((<const> . 1114111))).

  Instead, pick whichever is more compact, using number of characters
  vs number of character code ranges as the deciding factor.

  This means that users can see SB-KERNEL:CHARACTER-SET types in
  eg. output from DESCRIBE or as return values from
  SB-INTROSPECT:FUNCTION-TYPE -- which is suboptimal, but less bad
  than such types slowing us down as horribly as they do prior to this
  change.

  At some point, however, we should document and export SB-EXT:CHARSET
  or something -- but I don't want to think of the issues associated
  with a public interface right now.
NEWS
src/code/late-type.lisp
tests/character.pure.lisp