Scheme 基准序列后的方案缺失表达式
当我在DrRacket中运行此命令时,我收到错误:“case:bad syntax(在数据序列之后缺少表达式):((else exp))。” 这是密码Scheme 基准序列后的方案缺失表达式,scheme,case,expand,Scheme,Case,Expand,当我在DrRacket中运行此命令时,我收到错误:“case:bad syntax(在数据序列之后缺少表达式):((else exp))。” 这是密码 (define expand (lambda (exp) (if (pair? exp) (case (car exp) ((let) (expand(let-expansion (exp)))) ((and) (expand(and-expansion (exp)))) ((or) (expand(or-expansi
(define expand (lambda (exp)
(if (pair? exp)
(case (car exp)
((let) (expand(let-expansion (exp))))
((and) (expand(and-expansion (exp))))
((or) (expand(or-expansion (exp))))
((let*) (expand(let*-expansion (exp))))
((letrec) (expand(letrec-expansion (exp))))
((cond) (expand(cond-expansion (exp))))
((case) (expand(case-expansion (exp))))
((else exp))))
((exp))))
不确定是什么导致了错误。我是scheme的新手,所以我可能没有正确理解语法
有人能给我解释一下这个函数有什么问题吗?看起来像是括号问题,试试这个:
(define expand
(lambda (exp)
(if (pair? exp)
(case (car exp)
((let) (expand (let-expansion exp)))
((and) (expand (and-expansion exp)))
((or) (expand (or-expansion exp)))
((let*) (expand (let*-expansion exp)))
((letrec) (expand (letrec-expansion exp)))
((cond) (expand (cond-expansion exp)))
((case) (expand (case-expansion exp)))
(else exp))
exp)))
如果这对您有效,请告诉我,我删除了许多看似不必要的括号,但我不确定
exp
应该是什么样子,因此可能存在潜在的bug