假設我有以下計劃(R6RS)代碼:等於?和記錄型
(define-record-type typeA
(fields
(mutable A)))
和我創建了兩個記錄:
(define X (make-typeA 123))
(define Y (make-typeA 123))
我不明白爲什麼(equal? X Y)
和(equal? (make-typeA 123) (make-typeA 123))
回報#f
。
我讀了R6RS標準(section 11.5),但我並不是很瞭解它。
那麼,首先感謝你的回答,我同意'eqv?'返回FALSE,因爲只有當對象是同一個對象時它才爲TRUE。例如。 '(eqv?(list 1 2 3)(list 1 2 3))'returns FALSE,but'(equal?(list 1 2 3)(list 1 2 3))'返回TRUE,因爲它們具有相同的形狀「 – Aslan986 2012-04-25 12:44:33
我也嘗試過定義一個新的記錄類型'typeB',它是'typeA'的副本,除了字段是'immutable'但是(等於?(make-typeB 123)(make-typeB 123 ))'仍然是FALSE。 – Aslan986 2012-04-25 12:51:52