我有一个要评估其真实性的列表,但是(除非我缺少Racket / Scheme的某些内置方面),我需要将其转换为布尔值。
例如,我有
'(#t and #f)
我需要
(function '(#t and #f)) ;in order to return...
>#f
我尝试过(eval '(and #t #f)
,但收到以下错误消息:
and: unbound identifier;
also, no #%app syntax transformer is bound in: and
据我所知,我有将'(#t和#f)转换为'(和#t #f)的代码,据我所知这应该不是问题。
(define (Evaluate-WFF lst)
(match lst
((list a b c)
(list (reorg b)
(reorg a)
(reorg c)))
(_ lst)))
当我尝试从中进行eval
时,我收到了前面提到的错误消息。
答案 0 :(得分:2)
根据docs,可能需要根据您使用的语言提供名称空间。在#lang racket
中,这是这样做的方法:
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(eval '(and #t #f) ns)
=> #f