On 7/19/05, Jens Axel Søgaard <xxxxxx@soegaard.net> wrote:
> felix winkelmann wrote:
> > On 7/18/05, Thomas Lord <xxxxxx@emf.net> wrote:
> >>
> >> It has never been great style in Scheme, even if strictly portable, to
> >>write programs which assume that string->symbol and symbol->string define a
> >>1:1 relationship between the two types.
> >
> > I'm probably missing something obvious, but this strikes me as quite
> > nonsensical.
> > Could you elaborate?
>
> The culprit is uninterned symbols:
>
> > (let ((foo 'foo))
> (eq? (string->symbol (symbol->string foo))
> foo))
> #t
>
> >(let ((foo (string->uninterned-symbol "foo")))
> (eq? (string->symbol (symbol->string foo))
> foo))
> #f
>
Uninterned symbols are (currently) not provided by standard Scheme,
and can be simulated by some magic prefix in portable code.
cheersm
felix