2012-10-14 14 views
0

簡單的問題,對於實際使用計劃的人來說簡單的答案。我怎樣才能知道變量是否是字母表中的一個字母?如何查找變量是Scheme中的一個字母?

我認爲它是這樣的(字母?x),其中x是一些不確定類型。任何人都可以告訴我什麼布爾函數可以使用?

編輯:

我怎麼能做出一些看起來像這樣:(?somFunction-isALetter一) 返回:#T

凡不是一個變量。

+3

我認爲你的意思是「價值」而不是「變量」在這裏;你關心的是'x'包含的值,而不是它被稱爲'x'的事實。 –

+0

@PaulStansifer夠正確的。儘管我知道'信?'不是正確的術語,因此只是一個例子。 – jQwierdy

+2

我還不確定我是否知道你想要什麼。它可能是兩件事情:1)給定變量綁定到長度爲1的字符串的值,其中該字符串中的單個字符是字母表的字母? 2)表示變量的符號的字符串形式是長度爲1的字符串,其中該字符串中的單個字符是字母表中的一個字母? –

回答

4

球拍,該char-alphabetic?功能隻字符作爲參數,但它很容易定義返回所有非字符,而不是失敗的虛假功能:

(define (letter? x) (and (char? x) (char-alphabetic? x))) 
4

使用char-alphabetic?程序這一點。來自documentation

char-alphabetic?返回#t如果字符具有Unicode「字母」屬性。

使用方法如下:

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

如果字符是一個變量:

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

注意char-alphabetic?僅適用於字符

UPDATE:

重讀我相信我誤解了它的問題。如果你有興趣瞭解,如果變量的名字只是一個字母,這將工作:

(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 

在另一方面,如果你有興趣在實際內容變量,然後應用這個答案的第一部分。

相關問題