Оцениваете список логических значений? - PullRequest
0 голосов
/ 20 марта 2019

У меня есть список, по которому я хочу оценить правду, но (если я не пропускаю какой-то встроенный аспект 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 Ответ

2 голосов
/ 20 марта 2019

В зависимости от того, какой язык вы используете, вам может потребоваться предоставить пространство имен, согласно документам . В #lang racket вот как это сделать:

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

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