구성표 / 라켓 : 부울과 접기
-
13-12-2019 - |
문제
(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
. 제휴하지 않습니다 StackOverflow