该程序产生错误:
define: unbound identifier;
also, no #%app syntax transformer is bound in: define
Run Code Online (Sandbox Code Playgroud)
当粘贴到REPL中(确切地说,最后一行:(displayln(eval-clause 子句 状态))),它可以工作.在定义窗口中运行时,它会失败.我不知道为什么.
#lang racket
(define *state* '((a false) (b true) (c true) (d false)))
(define *clause* '(a (not b) c))
(define (eval-clause clause state)
(for ([x state])
(eval `(define ,(first x) ,(second x))))
(eval (cons 'or (map eval clause))))
(displayln (eval-clause *clause* *state*))
Run Code Online (Sandbox Code Playgroud)
这个也是:
(define (eval-clause clause state)
(eval `(let ,state ,(cons 'or clause))))
Run Code Online (Sandbox Code Playgroud)
产生
let: unbound identifier;
also, no #%app syntax transformer is bound …
Run Code Online (Sandbox Code Playgroud)