Scheme 如何将符号a与字符a进行比较?

Scheme 如何将符号a与字符a进行比较?,scheme,Scheme,我有一份包含信件的清单。 当我做(车(a))时,它给了我符号a。 我如何将其与角色a进行比较 我必须做(eq?(汽车列表)(汽车(a))?符号和字符是不同类型的数据。幸运的是,Scheme可以让您转换几乎任何您想要的内容。例如,在Racket中: #lang racket ;; the symbol a: 'a ;; the character a: #\a ;; are they equal? no. (equal? 'a #\a) ;; produces #f ;; converti

我有一份包含信件的清单。 当我做(车(a))时,它给了我符号a。 我如何将其与角色a进行比较


我必须做(eq?(汽车列表)(汽车(a))?

符号和字符是不同类型的数据。幸运的是,Scheme可以让您转换几乎任何您想要的内容。例如,在Racket中:

#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   

综上所述,如果你正在做家庭作业,老师几乎肯定会给你一条更简单的道路。

@Robert Harvey哇!有点苛刻?也许给提问者5分钟时间重新措辞?看起来他们不小心提交了不完整的问题。@Andre Viau
(a)
是一个带引号的列表,而
car
占据该列表的首位。在这种情况下,
a
是一个符号。符号是一种原子数据类型,存在于许多Lisp和Scheme中。您可以通过各种类型谓词来检查类型,例如
list?
symbol?
number?
。这个问题甚至还没有结束e#3不是一个问题。它只是噪音。如果OP费心完成它,它可以重新打开。对不起,是的,它是一个符号,谢谢!…我将研究如何将符号转换为字符。@Andre Viau
char=?
不会工作,因为它不是字符。如果要比较符号,请使用
eq?
。如果要从符号中获取字符bol,你可以做
(string ref(symbol->string'a)0)
,但是发布一些关于你尝试做什么的更多信息,也许SO mods会很乐意地让你问一个问题。@spacemanaki谢谢你的帮助。你回答了我的问题。