方案中的多个条件
Multiple conditions in scheme
我无法理解如何在方案中正确制作多重条件 if 语句的概念。例如
if(a>b && b<c){
action;
}
在我熟悉的大多数编程语言中,但这在方案中证明是一项艰巨的任务。
(define (my-list-ref lst)
(cond (and((>(car lst)0) (<(cadr lst)0))
((+ n 1)(my-list-ref (cdr list)))
(and((<(car lst)0) (>(cadr lst)0)))
(zero? car lst)
(my-list-ref(cdr lst))
(null? lst)
(display n))))
在 cond 代码的第一行,我想说如果列表中的汽车大于 0,并且 cadr 小于 0,我希望它采取某种行动,但我遇到 and 运算符的错误语法错误。我很困惑,非常感谢解释。
cond
的语法是这样的:
(cond
[question1 expression1]
[question2 expression2]
[question3 expression3]
[else expression4])
请注意,我使用的是方括号。在 Scheme 中,方括号和普通括号的含义相同。使用方括号时更容易看到分组。
你的例子变成这样:
(define (my-list-ref lst)
(cond
[(and (> (car lst) 0) (< (cadr lst) 0)) (my-list-ref (cdr list))]
[(and (< (car lst) 0) (> (cadr lst) 0)) some-action-here]
[(zero? car lst) (my-list-ref(cdr lst))]))
这里注意and
的语法是这样的:
(and expression1 expression2)
所以当你想检查 (> (car lst) 0)
和 (< (cadr lst) 0)
是否在同一类型时,cond-question 变成 (and (> (car lst) 0) (< (cadr lst) 0))
.
我无法理解如何在方案中正确制作多重条件 if 语句的概念。例如
if(a>b && b<c){
action;
}
在我熟悉的大多数编程语言中,但这在方案中证明是一项艰巨的任务。
(define (my-list-ref lst)
(cond (and((>(car lst)0) (<(cadr lst)0))
((+ n 1)(my-list-ref (cdr list)))
(and((<(car lst)0) (>(cadr lst)0)))
(zero? car lst)
(my-list-ref(cdr lst))
(null? lst)
(display n))))
在 cond 代码的第一行,我想说如果列表中的汽车大于 0,并且 cadr 小于 0,我希望它采取某种行动,但我遇到 and 运算符的错误语法错误。我很困惑,非常感谢解释。
cond
的语法是这样的:
(cond
[question1 expression1]
[question2 expression2]
[question3 expression3]
[else expression4])
请注意,我使用的是方括号。在 Scheme 中,方括号和普通括号的含义相同。使用方括号时更容易看到分组。
你的例子变成这样:
(define (my-list-ref lst)
(cond
[(and (> (car lst) 0) (< (cadr lst) 0)) (my-list-ref (cdr list))]
[(and (< (car lst) 0) (> (cadr lst) 0)) some-action-here]
[(zero? car lst) (my-list-ref(cdr lst))]))
这里注意and
的语法是这样的:
(and expression1 expression2)
所以当你想检查 (> (car lst) 0)
和 (< (cadr lst) 0)
是否在同一类型时,cond-question 变成 (and (> (car lst) 0) (< (cadr lst) 0))
.