2017-04-20 5 views
1

구성표에 여러 조건 if 문을 올바르게 작성하는 방법에 대한 개념을 파악하는 데 문제가 있습니다. 내가 익숙 뭔가 대부분의 프로그래밍 언어에서 if(a>b && b<c){ action; }구성표의 여러 조건

같은 예로들 수 있지만,이 계획에서 발굴 작업을 증명한다. 내가리스트의 자동차가 0보다 크고, 경우 CADR가 0보다 작은 것을 말하려고하고있는 콘드 코드의 첫 번째 라인
(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)))) 

, 나는 아직 그것을 특정 작업을 수행 할 and 연산자에 대한 잘못된 구문 오류로 인사합니다. 나는 깊이 혼란스러워서 설명을 크게 감사 할 것입니다.

답변

2

이 같은 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))이됩니다.

+0

감사합니다. 웬일인지 대괄호 [] 대신에()를 사용하여 많은 예제를 보았습니다. – user2738052

+0

괄호와 대괄호는 Racket에서 동일합니다. 그들을 사용하여 시각적 대비를 제공하십시오. –