Scheme 如何将符号a与字符a进行比较?
我有一份包含信件的清单。 当我做(车(a))时,它给了我符号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
我必须做(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 Viauchar=?
不会工作,因为它不是字符。如果要比较符号,请使用eq?
。如果要从符号中获取字符bol,你可以做(string ref(symbol->string'a)0)
,但是发布一些关于你尝试做什么的更多信息,也许SO mods会很乐意地让你问一个问题。@spacemanaki谢谢你的帮助。你回答了我的问题。