0

以下のいずれかを考えていた

(define (ID? x) (シンボル? x))

私は次のものを持っているとしましょう

(define list '(add 4 5))

「追加」が識別子またはキーワードであるかどうかを簡単に確認したい。そこで、次のことを考えていました

(define (ID? x) (char? x))

私もand条件付きを考えていました

(定義 (ID? x) (および (char? x)(symbol? x))

しかし、私の問題は、シンボルの場合、次のようなものを取ることです@

そしてchar?アプローチでは、複数の文字を含む識別子は受け入れられません。

and アプローチは意味がありません。私はリストに取り組んでいるので、リスト(string? x)全体が考慮されるため、うまくいくとは思いません。どんな提案も素晴らしいでしょう。ありがとう!

4

1 に答える 1

2

スキームには「キーワード」の概念がありません (少なくとも、あなたが話しているタイプではありません。Racket や Guile などの一部の実装には、キーワード引数のキーワードがあります#:foo)。したがって、私があなたの質問から読んだことから、シンボルとして読み取られたものはすべて、評価時に識別子として使用されます。したがって、symbol?十分です。

実際に Racket キーワードをテストしたい場合は、keyword?. symbol?そのようなキーワードはテストに合格しません。

-> (symbol? 'foo)
#t
-> (keyword? 'foo)
#f
-> (symbol? '#:foo)
#f
-> (keyword? '#:foo)
#t
于 2012-05-06T21:07:04.153 に答える