方案-大于,小于,an和条件的初学者语法问题

CKneeland

我刚刚开始在DrRacket中编写方案。但是,正如大家可能知道的那样,语法上的那些细微变化总是使我们感到困惑!

我相信我的错误在于和有条件。如果有人可以看看并告诉我哪里出了问题,那太好了!

; in-range?: int int list of numbers --> boolean
(define in-range?
  (lambda (a b s)
    (cond [(null? s) #t] ;List is empty
          [(null? a) #f]
          [(null? b) #f]
          [((and >= (car s)) ((a) <= (car s)) (b)) (in-range? (a) (b) (cdr s))]
          [else #f]
     )))
除夕夜

想象一下这种形式:

(test a b)

您可以看到它是一个应用程序,因为括号test不是语法操作数。然后test进行评估,并且预期结果是可以使用评估后的参数a调用的过程b

这是cond术语中唯一的表达形式:

((and >= (car s)) ((a) <= (car s)) (b)) (in-range? (a) (b) (cdr s))

这是一个应用程序。(and >= (car s)) ((a) <= (car s)) (b))不是语法操作数。然后对其进行评估,并且预期结果是一个过程,该过程至少接受一个参数,即对的评估(in-range? (a) (b) (cdr s))

由于表达式是and一个语法操作数,我们知道它要么是#f要么,#t并且您应该得到一个错误,例如Application: not a procedure

在Scheme中,括号周围的内容就像在C#和JavaScript等algol语言中后面的括号一样。想象一下这个表达式:

((a.car >=)(), (<= a() s.car)())(in-range(a(), b(), s.cdr))

JavaScript中也存在很多语法错误:-o

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章