【问题标题】:How to fix "not a procedure" error [duplicate]如何修复“不是程序”错误[重复]
【发布时间】:2017-02-10 21:46:47
【问题描述】:
(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)

它一直说((complement odd?)2) 不是一个过程。我不知道如何解决它。

【问题讨论】:

  • @AlexisKing 是同一个 OP 哈哈。
  • 您应该编辑现有问题,而不是发布新问题

标签: scheme racket


【解决方案1】:

试着做吧

(define (comp f g) (f g))

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

((complement odd?) 2)

【讨论】:

  • 你应该说出你改变了什么以及为什么它会有所作为。
  • 它总是被评估为#t,即使它应该是#f。
  • 那是因为你的逻辑不对。我也更新了我的答案来解决这个问题。如果您有任何问题,请告诉我
  • 看起来不像compose 看起来还可以。 complement 应该只有 (comp not f) 作为它的主体。
猜你喜欢
  • 2013-03-20
  • 2019-11-26
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
  • 2019-12-25
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多