0

スキームで、データ型がシンボルかどうかを確認する方法はありますか?

何かのようなもの

(define symbol-test
  (lambda (s)
    (if (symbol? s)
        #t
        #f)))

だからあなたが好き(symbol-test 'x)ならそうあるべきです#t。(xが定義されていなくても) そして、これは(symbol-test 3)or(symbol-test '(1 2 3))であるべきです#f

4

1 に答える 1

4

あなたは実際にそこにそれを手に入れました。symbol?R5RSの標準機能です。

標準を引用するには

手順:シンボル?obj objがシンボルの場合は#tを返し、それ以外の場合は#fを返します。

(symbol? 'foo)                         ==>  #t
(symbol? (car '(a b)))                 ==>  #t
(symbol? "bar")                        ==>  #f
(symbol? 'nil)                         ==>  #t
(symbol? '())                          ==>  #f
(symbol? #f)                           ==>  #f

関連するメモで、私は使用します

(define symbol-test symbol?)

現在の実装の代わりに、よりクリーンで理解しやすくなっています。

于 2013-01-30T04:44:11.603 に答える