如何使谓词功能?在计划中

时间:2014-10-08 14:33:27

标签: scheme racket

我正在尝试制作谓词函数

数据类型定义

(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? ... ) 

如果你帮助我将是荣幸的

1 个答案:

答案 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