Scheme 如何修复“非过程”错误

Scheme 如何修复“非过程”错误,scheme,racket,Scheme,Racket,它一直说补码奇数?2不是一个过程。我不知道如何修复它。试着做一下 (define (comp f g) (lambda (x)(f (g x)))) (define (complement f) (cond ((equal? (comp f (lambda (g) g)) #t) #f) (else #t))) ((complement odd?)2) 你应该说你改变了什么,为什么会有不同。它总是被评估为t,即使它应该是f。那是因

它一直说补码奇数?2不是一个过程。我不知道如何修复它。

试着做一下

(define (comp f g)
  (lambda (x)(f (g x))))

(define (complement f) (cond ((equal? (comp f (lambda (g) g)) #t) #f)
                            (else #t)))

((complement odd?)2)

你应该说你改变了什么,为什么会有不同。它总是被评估为t,即使它应该是f。那是因为你的逻辑是错的。我已经更新了我的答案来解决这个问题。如果你有任何问题,请告诉我,因为你看起来已经不太好了。补语应该只有comp而不是f作为主体。@AlexisKing它是相同的OP lol。你应该编辑你现有的问题,而不是发布新的问题
(define (comp f g) (f g))

(define (complement f) (lambda (g) (cond ((comp f g) #t) (else #f))))

((complement odd?) 2)