문제

(foldr + 0 '(1 2 3 4))
.

10가 내가 기대하는 것을 반환하지만

(foldr and false '(true true false))
.

에 오류가

and: expected an open parenthesis before and, but found none
.

foldr는 (하나의 목록이 있기 때문에 두 개의 매개 변수, 기본 케이스, 목록)을 취합니다.목록에 0이 넘는 부울이 있고 모두 사실 인 경우에는 두 번째 코드 라인이 True를 반환 할 것으로 기대합니다. 그리고 그것은 내가 작동하는 것으로 생각되는 방법입니다.그러나 분명히.

도움이 되었습니까?

해결책

And는 특별한 형식이며 프로 시저 을 두 번째 인수로 기대하는 foldr에서 작동하지 않습니다.대신 이것을 시도하십시오 :

(foldr (lambda (x y) (and x y)) #t '(#t #t #f)) ;#t as base case
.

이 특정 사례에 대한 또 다른 대안은 andmap를 사용하는 것입니다.

(andmap identity '(#t #t #f))
.

다른 팁

Scheme 시스템에서는 일반적으로 일반적으로 매크로 또는 특수 형식으로 정의되며 절차가 아닌 이유는 작동하지 않는 이유입니다.

#;1> +
#<procedure C_plus>
#;2> and

Error: unbound variable: and
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top