有没有办法检查符号数据类型?

时间:2013-01-30 04:37:50

标签: scheme

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

有点像

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

因此,如果您提供的(symbol-test 'x)应为#t。 (即使没有定义x) 此(symbol-test 3)(symbol-test '(1 2 3))应为#f

1 个答案:

答案 0 :(得分: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?)

而不是您当前的实施,它更清晰,更容易理解。