0

在方案中,有没有办法检查数据类型是否是符号?

就像是

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

所以如果你给喜欢(symbol-test 'x)应该是#t。(即使x未定义)而且 this (symbol-test 3)or (symbol-test '(1 2 3))should be #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 回答