내가 LISP에서 일부 코드를 포팅하고있어,하지만 난 단지를 생략하고 의견을 말을 구현할 수 물론이 부분 (분명히 그 MIT-구성표입니다)리스프 코드 설명
(define (end-of-sentence? word)
(and (or (char-exist-last? word '#\.)
(char-exist-last? word '#\!)
(char-exist-last? word '#\?))
(not (initial? word))
(or (eq? (peek-char) '#\Space) ;;peek- so test for linefeed isn't affected
(eq? (peek-char) '#\n) ;;note- test for space isn't neccessary
(eq? (read-char) '#\t))))
;;counts the number of sentences in a given file and
;;stops at the given number
;;returns true once at that position, returns error if eof
(define (goto-sentence? file stop)
(define (c-g-iter num)
(cond ((= num stop)
#t)
((end-of-sentence?)
(c-g-iter (+ num 1)))
((not (char-ready?))
(error "EOF reached, number to large in goto-sentence?: " stop))
(else
(c-g-iter num))))
(begin
(open-path file)
(c-g-iter 1)))
에 붙어있어 하지만, 백그라운드에서 어떤 마법도 일어나지 않도록하고 싶었습니다. 그래서 ...이 기능은 어떻게 작동합니까? 실제로 문자를 읽는 곳은 어디입니까? 생각만큼이나 못생긴가? 마지막 검사에서 부작용으로 문자를 소비합니까? end-of-sentence?
? 아니면 char-ready?
실제로 뭔가를 읽나요?
하지만 다시 - (end-of-sentence?) (c-g-iter (+ num 1))
은 무엇을 의미합니까, 나는 c-g-iter
이 단어를 반환 할 것으로 기대하지 않습니다.