对于真正使用方案的人来说,简单的问题,简单的答案。如何确定变量是否是字母表中的字母?
我假设它是这样的(字母?x),其中x是某种不定类型。谁能告诉我可以使用什么布尔函数?
编辑:
我怎样才能做出看起来像这样的东西:(somFunction-isALetter?a)返回:#t
其中 a 不是变量。
在 Racket 中,该char-alphabetic?函数仅接受字符作为参数,但很容易定义一个对所有非字符返回 false 而不是失败的函数:
(define (letter? x) (and (char? x) (char-alphabetic? x)))
Run Code Online (Sandbox Code Playgroud)
使用char-alphabetic?此过程。从文档中:
\n\n\n\n
char-alphabetic?如果 char 具有 Unicode \xe2\x80\x9cAlphabetic\xe2\x80\x9d 属性,则返回 #t。
像这样使用它:
\n\n(char-alphabetic? #\\a)\n> #t\nRun Code Online (Sandbox Code Playgroud)\n\n如果字符在变量中:
\n\n(define x #\\a)\n(char-alphabetic? x)\n#t\nRun Code Online (Sandbox Code Playgroud)\n\n请注意,这只char-alphabetic?适用于字符。
更新:
\n\n重新阅读问题我相信我误解了它。如果您有兴趣找出变量的名称是否只是一个字母,则可以使用以下方法:
\n\n(define (is-variable-a-letter? x)\n (let ((var (string->list (symbol->string x))))\n (and (= (length var) 1)\n (char-alphabetic? (car var)))))\n\n(is-variable-a-letter? \'x)\n> #t\nRun Code Online (Sandbox Code Playgroud)\n\n另一方面,如果您对变量的实际内容感兴趣,请应用此答案的第一部分。
\n