2014-04-20 7 views
0

방금 ​​Scheme을 배우기 시작했는데 몇 가지 문제가 있습니다. 윈도우즈에서 작은 체형 (64 비트)을 사용하고 있습니다. 필자는 'every', 'keep', 'accumulate'등의 함수를 사용하여 예제를 읽고 있습니다.이 함수는 내장되어 있고 작은 것으로 알려져 있습니다. 즉, 사용하기 전에 정의 할 필요는 없습니다. 그러나 테스트를 위해 읽은 예제를 입력하면 오류가 반환됩니다. 예 :쁘띠 체 chem 계획 변수를 혼동? (___ 변수가 바인딩되지 않았습니다.)

;; To make nouns plural 

(define (plural noun) 

(if (equal? (last noun) ’y) 

(word (bl noun) ’ies) 

(word noun ’s))) 


> (every plural ’(beatle turtle holly kink zombie)) ;; Example input 

(BEATLES TURTLES HOLLIES KINKS ZOMBIES)    ;; Expected output 

대신 "변수가 모두 바인딩되지 않았습니다."라는 오류 메시지가 나타납니다. 마치 '모든'이 알려진 함수가 아니라 변수로 취급되는 것과 같습니다. '유지'및 '누적'으로 예제를 시도 할 때도 동일한 오류가 발생합니다. 코딩은 올바른 것으로 가정합니다 (읽는 책에서 복사되기 때문에). 이러한 함수가 내장되어 있고 정의 할 필요가 없거나 다른 문제가 있다고 생각하는 것이 잘못 되었습니까? 희망을 누군가가 이것에 대해 약간의 비춰 줄 수 있습니다.

답변

1

every 절차는 SRFI-1에 정의되어 있으며 이 아니고 표준 언어의 부분입니다. Chez Scheme에서 사용 가능한 SRFI에 대해서는 project을 참조하십시오.

게다가 나는 every을 원하는 절차라고 생각하지 않습니다. 무엇을하고 싶은지는 map입니다. 먼저 설명서를 확인하십시오!

(map plural '(beatle turtle holly kink zombie))