簡単な質問、実際にスキームを使用する人のための簡単な答え。変数がアルファベットの文字であるかどうかを確認するにはどうすればよいですか?
私はそれがこのようなもの(文字?x)であると仮定しました。ここで、xは不定型です。使用できるブール関数を教えてもらえますか?
編集:
次のようなものを作成するにはどうすればよいですか:(somFunction-isALetter?a)戻り値:#t
ここで、aは変数ではありません。
Racketでは、char-alphabetic?
関数は引数として文字のみを受け取りますが、失敗する代わりにすべての非文字に対してfalseを返す関数を定義するのは簡単です。
(define (letter? x) (and (char? x) (char-alphabetic? x)))
char-alphabetic?
このための手順を使用します。ドキュメントから:
char-alphabetic?
charにUnicodeの「Alphabetic」プロパティがある場合は#tを返します。
次のように使用します。
(char-alphabetic? #\a)
> #t
文字が変数に含まれている場合:
(define x #\a)
(char-alphabetic? x)
#t
文字char-alphabetic?
に対してのみ機能することに注意してください。
アップデート:
質問を読み直すと、私はそれを誤解したと思います。変数の名前が1文字だけであるかどうかを調べることに興味がある場合は、次のように機能します。
(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
一方、変数の実際の内容に関心がある場合は、この回答の最初の部分を適用してください。