2016-10-05 6 views
0

을 감안할 때 이러한 정의 :평가 라켓 표현

(define s 8) 
(define p (/ s 2)) 
(define (f s p) 
     (cond [(or (> s 0) p) 'yes] [(< s 0) 'no])) 

나는이 표현 평가할 :

(f 0 (and (< s p) (> s 2))) 

지금까지 내가 가지고 :

 ⇒ (f 0 (and (< 8 p) (> s 2))) 
     ⇒ (f 0 (and (< 8 4) (> s 2))) 
     ⇒ (f 0 (and false (> s 2))) 
     ⇒ (f 0 false) 

가 어떻게이 문제를 마무리 할을?

답변

1

일치하는 인수로 매개 변수를 바꾸고 f (cond 표현식) 본문으로 바꾸어야합니다.

+0

내가 대신 콘드 – kaminey

+0

의 0을 작성하는 경우 프로그램이 수락하지 않는 무엇 있습니다 당신은'당신이 대체해야한다고 생각 0과 함께 cond'? –

+0

@ScottHunter : 나는 kaminey가 당신의 대답을 이해하지 못한다는 것이 분명하다고 생각합니다. 나는 그에게 그/그녀의 숙제에 대한 완전한 답을주기를 당신의 망설임으로 이해하지만 어쩌면 당신은 당신의 "f"시술의 시술로 이것을 대체 할 수있는 다른 기능을 만들 수있을 것입니다. – ruakh

0

라켓 f 프로 시저가 있음을보고하고 인자의 평가 : 둘 (or (> 0 0) #f)(< 0 0) 보낸

; ==> 
(cond [(or (> 0 0) #f) 'yes] 
     [(< 0 0) 'no]) 

: 다음 인수 f 본문의 변수를 대입

(f 0 (and (< s p) (> s 2))) ; ==> 
(f 0 (and (< 8 4) (> 8 2))) ; ==> 
(f 0 (and #f #t))   ; ==> 
(f 0 #f)     ; s=0, p=#f 

#f 결과는 구현에서 선택한 정의되지 않은 값입니다. 라켓에서는이 항상 피할 수 있었다 #<void>

; ==> 
#<void> 

else 용어가있다 :

(define (f s p) 
    (cond [(or (> s 0) p) 'yes] 
     [(< s 0) 'no] 
     [else 'banana])) 

(f 0 (and (< s p) (> s 2))) ; ==> banana