正在评估布尔值列表?

时间:2019-03-20 01:03:07

标签: scheme racket

我有一个要评估其真实性的列表,但是(除非我缺少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时,我收到了前面提到的错误消息。

1 个答案:

答案 0 :(得分:2)

根据docs,可能需要根据您使用的语言提供名称空间。在#lang racket中,这是这样做的方法:

(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))

(eval '(and #t #f) ns)
=> #f