2011-03-22 122 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 

与所有的说,如果你在一个家庭作业工作,教师几乎肯定心中都有一个更简单的路径,你