在方案中,有没有办法检查数据类型是否为符号?
有点像
(define symbol-test
(lambda (s)
(if (symbol? s)
#t
#f)))
因此,如果您提供的(symbol-test 'x)
应为#t
。 (即使没有定义x
)
此(symbol-test 3)
或(symbol-test '(1 2 3))
应为#f
。
答案 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?)
而不是您当前的实施,它更清晰,更容易理解。