R5RS 6.3.3 говорит
(eq? 'bitBlt (string->symbol "bitBlt")) ==> #f
Означает ли это, что
(eq? 'bitBlt (string->symbol (symbol->string 'bitBlt))) ==> #f?
Лось возвращает #t!
R5RS также говорит
(string->symbol "mISSISSIppi") ==> the symbol with name "mISSISSIppi"
(предположительно это означает «mISSISSIppi)
и
(symbol->string 'Martin) ==> "martin"
означает, что символ-> строка возвращает строку в стандартном регистре (в этом примере строчные).
Так что, если я расширю свой второй пример
(symbol->string 'bitBlt) ==> "bitblt"
(string->symbol (symbol->string 'bitBlt)) ==> 'bitblt
и, следовательно,
(eq? 'bitBlt (string->symbol (symbol->string 'bitBlt))) ==> #t
потому что символы нечувствительны к регистру от R5RS
(eq? 'mISSISSIppi 'mississippi) ==> #t
Так что, если я расширю свой первоначальный вопрос
(string->symbol "bitBlt") ==> 'bitblt
и, следовательно,
(eq? 'bitBlt (string->symbol "bitBlt")) ==> #t
Правильно? Но R5Rs говорит #f!
Где я здесь не так?
Почему это поведение должно быть указано?
Ref:
http://people.csail.mit.edu/jaffer/r5rs_8.html#SEC49
http://bugs.call -cc.org / browser / numbers / r4rstest.scm? Rev = 1 строка 468
Пример реального сеанса:
3> (display 'bitBlt)
bitblt
3> (display (string->symbol "bitBlt"))
bitBlt
3> (eq? 'bitBlt (string->symbol "bitBlt"))
#f
3> (eq? 'bitblt (string->symbol "bitBlt"))
#f
3> (eq? 'bitblt (string->symbol "bitblt"))
#t
3> (eq? 'bitBlt (string->symbol (symbol->string 'bitBlt)))
#t
3> (eq? 'mISSISSIppi 'mississippi)
#t