0

对于实际使用方案的人来说,简单的问题,简单的答案。如何确定变量是否是字母表中的字母?

我认为它是这样的(字母?x),其中 x 是一些不确定的类型。谁能告诉我可以使用什么布尔函数?

编辑:

我怎么能做出这样的东西:(somFunction-isALetter?a)返回:#t

其中 a 不是变量。

4

2 回答 2

4

在 Racket 中,该char-alphabetic?函数只接受字符作为参数,但很容易定义一个函数,它为所有非字符返回 false 而不是失败:

(define (letter? x) (and (char? x) (char-alphabetic? x)))
于 2012-10-14T02:49:48.867 回答
4

使用此char-alphabetic?过程。从文档中:

char-alphabetic?如果 char 具有 Unicode“Alphabetic”属性,则返回 #t。

像这样使用它:

(char-alphabetic? #\a)
> #t

如果字符在变量中:

(define x #\a)
(char-alphabetic? x)
#t

请注意,char-alphabetic?仅适用于characters

更新:

重新阅读这个问题,我相信我误解了它。如果您有兴趣了解变量的名称是否只是一个字母,这将起作用:

(define (is-variable-a-letter? x)
  (let ((var (string->list (symbol->string x))))
    (and (= (length var) 1)
         (char-alphabetic? (car var)))))

(is-variable-a-letter? 'x)
> #t

另一方面,如果您对变量的实际内容感兴趣,请应用此答案的第一部分。

于 2012-10-14T02:50:52.557 回答