Я пытаюсь оценить формулу в схеме:Eval функция схемы с цитатой
(define formula '(if (or (equal? '?country 'United-States) (equal? '?country 'England))
#t
#f))
(define (eval-formula formula)
(eval `(let ([?country 'United-States])
(display formula) (newline)
(display ?country) (newline)
,formula)))
(eval-formula formula)
чтение http://docs.racket-lang.org/guide/eval.html, который должен вернуться #t, но когда я запускаю его, он возвращает #F. Не могли бы вы рассказать мне, что я неправильно понял?
Я попытался также:
(define formula '(if (or (equal? '?country 'United-States) (equal? '?country 'England))
#t
#f))
(define ?country 'United-States)
(eval formula)
, но я получил тот же результат.
Большое спасибо!
Проблема в том, что я получаю некоторые формулы и некоторые значения для переменных (те, которые начинаются с?), и я должен возвращать true или false. Я попытался отладить его и оценил: (if (или (equal? (Quote? Country) (quote United)) (равно? (Quote? Country) (quote England))) #t #f). Я пытаюсь удалить эту «цитату» перед страной. –
Мой вопрос в том, как я могу опубликовать недостоверные данные? Country –
Единственный вариант, который я могу увидеть, чтобы переписать 'formula' для замены' (quote? Country) 'только с'? Country'. Если вы попытаетесь переопределить 'quote', то это переопределение будет применяться к' (quote United States) 'и' (quote England) 'и вызывает проблемы с оценкой. – GoZoner