Scheme 언어를 처음 사용합니다. 나는 "간단한 계획"책을 읽고, 다음 예를 통해 온 오전 :스키마 평가 예를 모르겠다.
(cond (empty? 3)
(square 7)
(else 9))
나는 그것을 실행하면 나는 각 콘드 표현이 개 인수를 취할 필요가 있음을 알고 3. 얻었다 "평가"에 대한 하나를 조건과 두 번째는 "대답"입니다. 평가판은 어디에 있고 답변은 어디에 있습니까? 왜 ?
Scheme 언어를 처음 사용합니다. 나는 "간단한 계획"책을 읽고, 다음 예를 통해 온 오전 :스키마 평가 예를 모르겠다.
(cond (empty? 3)
(square 7)
(else 9))
나는 그것을 실행하면 나는 각 콘드 표현이 개 인수를 취할 필요가 있음을 알고 3. 얻었다 "평가"에 대한 하나를 조건과 두 번째는 "대답"입니다. 평가판은 어디에 있고 답변은 어디에 있습니까? 왜 ?
이 하지 실제 예입니다 : 당신은 쉽게 다시 한 번 함수 이름 empty?
사실 간주되기 때문에 다음 코드는 "ok"
를 반환합니다 예를 들어,이 동작을 확인할 수 있습니다.
올바르게 이해 했으므로 각 절의 길이는 이고 길이는이며 인 결과는입니다. 조건은 다음과 같습니다. 빈?, 평방 및 기타. 대답은 , 및 입니다.
cond
은 #t
으로 평가되는 첫 번째 조건을 찾습니다. Scheme에서, (#f
제외). 그래서 첫 번째 조건이 true로 평가 :
> (if empty? "true" "false")
"true"
및 cond
는 첫 번째 결과, 를 반환합니다. cond
위한
cond
식을 작성하는 올바른 방법은 다음과 같습니다
(cond ((even? 3) 3)
((odd? 5) 5)
(else -1))
당신이 볼, 술어 표현 각 조항의 왼쪽에 있고 그 중 하나에 해당하는 경우 다음 식에의 right가 평가되어 마지막 값을 반환합니다. 위 예에서 5
이 반환됩니다. empty?
기능 (때문에 명시 적으로 #f
사실로 간주됩니다 아니에요 계획 아무것도에) #t
으로한다, 그래서 첫 번째 절은 사실이고 오른쪽에있는 표현식이 평가 및 반환됩니다 코드에 대해서는
,이 무슨 일이 일어나고있다 이 경우는 3
입니다.
(if empty? "ok" "not ok")
구문은 다음 절은
(cond <clause1> <clause2> …)
는 :
(<test> <expression1> …)
또는
(<test> => <expression>)
마지막
<clause>
(else <expression1> <expresssion2> …)
일 수있다.
(cond (<test> <exp1> <exp2> …)
…
(else <exp1> <exp2> …))
당신이 당신의 표현으로이 일치하는 경우 : 따라서, =>
사건을 무시하는 cond
표현처럼 보인다 empty?
, 식별자하는 <test>
것을 볼
(cond (empty? 3)
(square 7)
(else 9))
하는 것입니다 항상 empty?
이 거짓이면 true 여야합니다. 식별자 square
은 또 다른 <test>
입니다. 그건 당신이 의도 한 것이 아닙니다.
원래 코드는 cond 문을 작성하는 올바른 방법이기도합니다. – WorBlux
@WorBlux는 문법적으로 그렇습니다. 그러나 쓸데없는 조건입니다. 첫 번째 조건은 항상 참입니다 ('empty? '가'# f'에 묶여 있지만 여전히 ...) –