2011-03-22 57 views
2

我有一個包含字母的列表。 當我這樣做(汽車'(一))它給了我符號a。 我如何將它與角色a進行比較?如何比較符號a和字符a?

我必須做的(EQ?(車名單)(車「(一))?

+2

你能澄清? – Venki 2011-03-22 20:07:08

+0

@。羅伯特哈維哇!有點苛刻嗎?也許給提問者5分鐘重新措辭?看起來就像他們意外提交了不完整的問題。 @Andre Viau''(a)'是一個引用列表,'car'是該列表的頭部。在這種情況下,'a'是一個符號。符號是許多Lisp和Scheme中的原子數據類型。你可以通過各種類型的謂詞來檢查類型,比如'list?','symbol?','number?'。 – spacemanaki 2011-03-22 20:13:42

+0

甚至沒有完成句子#3的問題不是一個問題。這只是噪音。如果OP煩惱完成它,它可以重新打開。 – bmargulies 2011-03-22 20:16:25

回答

4

符號和字符是不同類型的數據的。幸運的是,方案是願意讓你轉換你想要幾乎任何東西。在球拍,例如:

#lang racket 

;; the symbol a: 
'a 

;; the character a: 
#\a 

;; are they equal? no. 
(equal? 'a #\a) ;; produces #f 

;; converting a character to a symbol: 
(define (char->symbol ch) 
    (string->symbol (string ch))) 

(char->symbol #\a) ;;=> produces 'a 

;; converting a symbol to a character 
(define (symbol->char sym) 
    (match (string->list (symbol->string sym)) 
    [(list ch) ch] 
    [other (error 'symbol->char 
        "expected a one-character symbol, got: ~s" sym)])) 

(symbol->char 'a) ;; => produces #\a 

與所有的說,如果你在一個家庭作業工作,教師幾乎肯定心中都有一個更簡單的路徑,你