R5RS 6.3.3說爲什麼(EQ「高,bitBlt(與字符串>符號 「高,bitBlt」)?) - > #F
(eq? 'bitBlt (string->symbol "bitBlt")) ==> #f
這是否意味着
(eq? 'bitBlt (string->symbol (symbol->string 'bitBlt))) ==> #f?
麋鹿返回#牛逼!
R5RS還說
(string->symbol "mISSISSIppi") ==> the symbol with name "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!
我在哪裏錯了?
爲什麼要指定此行爲?
編號:
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
我添加的會話輸出質疑。謝謝。我不確定這是一個案例問題。如果這是一個案例問題,當然表達式3或4應該是真的?既然它在R4RStest.scm中,我懷疑是更深層的東西,但是我看不到。 Like(guessing)string-> symbol必須產生一個唯一的符號,不能重新使用現有符號的存儲。我關心的並不是'麋鹿' - 它可能是錯誤的 - 我試圖理解R5RS,以及我想,這個R4RStest.scm文件。在我看來,這種古怪會殘留像我這樣的傻子,他們可能從來沒有弄清楚哪裏出了問題。 – philcolbourn 2012-02-12 14:28:14
@philcolbourn:這很明顯,你的'read'規範化了case,而'string-> symbol'沒有。由於初始輸入被歸一化爲'(字符串 - >符號(符號 - >字符串'bitBlt))'的結果應該打印爲'bitblt'。 – 2012-02-12 15:53:28
這是我的第一個想法,但爲什麼然後是(eq?'bitblt(string-> symbol「bitBlt」))==> #f? (來自會話輸出的第四個結果),爲什麼它關心符號的情況下(eq?'mISSISSIppi'mississippi)==> #t? (第7個結果) – philcolbourn 2012-02-13 04:17:45