我正在尝试制作谓词函数
数据类型定义
(define-datatype expression expression?
(const-exp (num number?))
(var-exp (var symbol?))
(zero?-exp (exp1 expression?))
(diff-exp (exp1 expression?)
(exp2 expression?)))
如果参数是#2(struct:const-exp 7),则打印#t
如果参数是#2(struct:var-exp x),则打印#f
(define const-exp? ... )
如果你帮助我将是荣幸的
答案 0 :(得分:2)
所以我的猜测是你正在研究Essentials of Programming Languages并且可能使用Racket作为你的环境。
如果确实如此,您可以在这里使用cases:
(define (const-exp? e)
(cases expression e
(const-exp (num) #t)
(else #f)))
然后
> (const-exp? (const-exp 7))
#t
> (const-exp? (var-exp 'x))
#f